一、控制器定义
控制器也是管理pod的一种手段
-
自主式pod:pod退出或意外关闭后不会被重新创建
-
控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目
Pod控制器是管理pod的中间层,使用Pod控制器之后,只需要告诉Pod控制器,想要多少个什么样的Pod就可以了,它会创建出满足条件的Pod并确保每一个Pod资源处于用户期望的目标状态。如果Pod资源在运行中出现故障,它会基于指定策略重新编排Pod
当建立控制器后,会把期望值写入etcd,k8s中的apiserver检索etcd中我们保存的期望状态,并对比pod的当前状态,如果出现差异代码自驱动立即恢复
二、控制器常用类型 
三 replicaset控制器
3.1 replicaset功能
-
ReplicaSet 是下一代的 Replication Controller,官方推荐使用ReplicaSet
-
ReplicaSet和Replication Controller的唯一区别是选择器的支持,ReplicaSet支持新的基于集合的选择器需求
-
ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行
-
虽然 ReplicaSets 可以独立使用,但今天它主要被Deployments 用作协调 Pod 创建、删除和更新的机制
3.2 replicaset参数说明
3.3 replicaset 示例
[root@k8s-master pod]# kubectl create deployment timinglee --image myapp:v1 --replicas 2 --dry-run=client -o yaml > timinglee.yml
[root@k8s-master pod]# ls
lee.yml timinglee.yml
[root@k8s-master pod]# vim timinglee.yml
replicaset 示例
[root@k8s-master pod]# ls
lee.yml timinglee.yml
[root@k8s-master pod]# vim timinglee.yml
#replicaset是通过标签匹配pod
[root@k8s-master pod]# kubectl label pods example-rep-9lbts app=lee --overwrite
pod/example-rep-9lbts labeled
[root@k8s-master pod]# kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
example-rep-22qx8 1/1 Running 0 4s app=timinglee
example-rep-9lbts 1/1 Running 0 5m22s app=lee
example-rep-dvjhp 1/1 Running 0 5m22s app=timinglee#恢复标签后
[root@k8s-master pod]# kubectl label pods example-rep-9lbts app=timinglee --overwrite
pod/example-rep-9lbts labeled
[root@k8s-master pod]# kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
example-rep-9lbts 1/1 Running 0 6m46s app=timinglee
example-rep-dvjhp 1/1 Running 0 6m46s app=timinglee