kubernetes系列07—Pod控制器详解

  Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源。

 

1.2 pod控制器有多种类型

 ReplicationControllerRC):RC保证了在所有时间内,都有特定数量的Pod副本正在运行,如果太多了,RC就杀死几个,如果太少了,RC会新建几个

 ReplicaSetRS:代用户创建指定数量的pod副本数量,确保pod副本数量符合预期状态,并且支持滚动式自动扩容和缩容功能。

 Deployment(重要):工作在ReplicaSet之上,用于管理无状态应用,目前来说最好的控制器。支持滚动更新和回滚功能,还提供声明式配置。

 DaemonSet:用于确保集群中的每一个节点只运行特定的pod副本,通常用于实现系统级后台任务。比如ELK服务

 Job:只要完成就立即退出,不需要重启或重建。

 CronJob:周期性任务控制,不需要持续后台运行

 StatefulSet:管理有状态应用

本文主要讲解ReplicaSetDeploymentDaemonSet 三中类型的pod控制器。

 

2、ReplicaSet 2.1 认识ReplicaSet

(1)什么是ReplicaSet?

  ReplicaSet是下一代复本控制器,是Replication Controller(RC)的升级版本。ReplicaSet和 Replication Controller之间的唯一区别是对选择器的支持。ReplicaSet支持labels user guide中描述的set-based选择器要求, 而Replication Controller仅支持equality-based的选择器要求。

 

(2)如何使用ReplicaSet

  大多数kubectl 支持Replication Controller 命令的也支持ReplicaSets。rolling-update命令除外,如果要使用rolling-update,请使用Deployments来实现。

  虽然ReplicaSets可以独立使用,但它主要被 Deployments用作pod 机制的创建、删除和更新。当使用Deployment时,你不必担心创建pod的ReplicaSets,因为可以通过Deployment实现管理ReplicaSets。

 

(3)何时使用ReplicaSet?

  ReplicaSet能确保运行指定数量的pod。然而,Deployment 是一个更高层次的概念,它能管理ReplicaSets,并提供对pod的更新等功能。因此,我们建议你使用Deployment来管理ReplicaSets,除非你需要自定义更新编排。

  这意味着你可能永远不需要操作ReplicaSet对象,而是使用Deployment替代管理 。后续讲解Deployment会详细描述。

 

2.2 ReplicaSet定义资源清单几个字段

 apiVersion: app/v1  版本

 kind: ReplicaSet  类型

 metadata  元数据

 spec  期望状态

 minReadySeconds:应为新创建的pod准备好的最小秒数

 replicas:副本数; 默认为1

 selector:标签选择器

 template:模板(必要的)

 metadata:模板中的元数据

 spec:模板中的期望状态

 status  当前状态

 

2.3 演示:创建一个简单的ReplicaSet

(1)编写yaml文件,并创建启动

简单创建一个replicaset:启动2个pod

[root@master manifests]# vim rs-damo.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp namespace: default spec: replicas: 2 selector: matchLabels: app: myapp release: canary template: metadata: name: myapp-pod labels: app: myapp release: canary environment: qa spec: containers: - name: myapp-container image: ikubernetes/myapp:v1 ports: - name: http containerPort: 80 [root@master manifests]# kubectl create -f rs-damo.yaml replicaset.apps/myapp created

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzxsj.html