POD控制器(kube-controller-manager)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POD控制器(kube-controller-manager)相关的知识,希望对你有一定的参考价值。

参考技术A Controller Manager 由 kube-controller-manager 和 cloud-controller-manager 组成。 它通过 apiserver 监控整个集群的状态, 并确保集群处于预期的工作状态。

kube-controller-manager 由一系列的控制器组成 :
Replication Controller、Node Controller、CronJob Controller、Daemon Controller、Deployment Controller、Endpoint Controller...等

cloud-controller-manager 在 Kubernetes 启用 Cloud Provider 的时候才需要,也包括一系列的控制器:
Node Controller、Route Controller、Service Controller

Pod控制器介绍:
1、Replication Controller
主要作用,控制有特定数量的Pod副本运行。若多余特定数量就kill,若少于特定数量则create。Replication Controller 就像一个进程管理器,监管着不同node上的多个pod,而不是单单监控一个node上的pod,Replication Controller 会委派本地容器来启动一些节点上服务。
注意:
1)Replication Controller只会对RestartPolicy = Always的Pod的生效(RestartPolicy的默认值就是Always),Replication Controller 不会去管理其他启动策略pod。
2)Replication Controller永远不会自己关闭。

2、ReplicaSet
ReplicaSet和 Replication Controller的区别在于选择器的支持。Replication Controller只支持基于等式的selector(env=dev或environment!=qa),但ReplicaSet还支持新的,基于集合的selector(version in (v1.0, v2.0)或env notin (dev, qa))。

3、Deployment
Deployment为Pod和Replica Set提供声明式更新。
使用流程Demo:
1)使用Deployment来创建ReplicaSet。ReplicaSet在后台创建pod。检查启动状态(成功/失败)
2)更新Deployment的PodTemplateSpec字段来声明Pod的新状态。这会创建一个新的ReplicaSet,Deployment会按照控制的速率将pod从旧的ReplicaSet移动到新的ReplicaSet中。
3)如果当前状态不稳定,回滚到之前的Deployment revision。每次回滚都会更新Deployment的revision。
4)扩容Deployment以满足更高的负载。
5)暂停Deployment来应用PodTemplateSpec的多个修复,然后恢复上线。
6)根据Deployment 的状态判断上线是否成功。
7)清除旧的不必要的ReplicaSet。

4、StatefulSet
有状态服务使用。
应用场景:
1)稳定的持久化存储(Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现)
2)稳定的网络标志(Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster IP的Service)来实现)
3)有序部署,有序扩展(Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次依次进行(即从0到N-1,在下一个Pod运行之前所有之前的Pod必须都是Running和Ready状态),基于init containers来实现)
4)有序收缩,有序删除(即从N-1到0)

5、DaemonSet
保证在每个Node上都运行一个容器副本,常用来部署一些集群的日志、监控或者其他系统管理应用。
应用场景:
1)日志收集(fluentd,logstash)
2)系统监控(Prometheus Node Exporter,collectd,New Relic agent,Ganglia gmond)
3)系统程序(kube-proxy, kube-dns, glusterd, ceph)

例子:
1、Deployment

2、Deployment+ DaemonSet

3、StatefulSet

参考资料:

《每天5分钟玩转Kubernetes》

《黑马k8s集群技术》

以上是关于POD控制器(kube-controller-manager)的主要内容,如果未能解决你的问题,请参考以下文章

Pod控制器

Pod控制器详解

K8S的Pod控制器

pod控制器

pod控制器

pod控制器