概述
Controller Manager在Pod工作流中起着管理和控制整个集群的作用,主要对资源对象进行管理,当Node节点中运行的Pod对象或是Node自身发生意外或故障时,Controller Manager会及时发现并处理,以确保整个集群处于理想工作状态。
kube-controller-manager 由一系列的控制器组成
Replication Controller
Node Controller
CronJob Controller
Daemon Controller
Deployment Controller
Endpoint Controller
Garbage Collector
Namespace Controller
Job Controller
Pod AutoScaler
RelicaSet
Service Controller
ServiceAccount Controller
StatefulSet Controller
Volume Controller
Resource quota Controller
工作流程
Replication Controller
Replication Controller称为副本控制器,在Pod工作流中主要用于保证集群中Replication Controller所关联的Pod副本数始终保持在预期值,比如若发生节点故障的情况导致Pod被意外杀死,Replication Controller会重新调度保证集群仍然运行指定副本数,另外还可通过调整Replication Controller中spec.replicas属性值来实现扩容或缩容。
Endpoint Controller
用于关联service和pod。
Endpoint用来表示kubernetes集群中Service对应的后端Pod副本的访问地址,Endpoint Controller则是用来生成和维护Endpoints对象的控制器,其主要负责监听Service和对应Pod副本变化。如果监测到Service被删除,则删除和该Service同名的Endpoints对象;如果监测到新的Service被创建或是被修改,则根据该Service信息获得相关的Pod列表,然后创建或更新对应的Endpoints对象;如果监测到Pod的事件,则更新它对应的Service的Endpoints对象。
Node Controller
Node controller通过API server定时获取Node的相关信息,实现管理和监控Node。
deployment controller
deployment管理replicaset,replicaset管理pod。可实现滚动升级和回滚应用、扩容和缩容
ingress controller
通过Ingress对象创建pod。
然后创建一个service,通过selector和pod中的labels,把service和pod关联起来。
其他controller
Deployment :部署无状态应用
Daemonset : 部署守护应用
Cronjob :部署定时任务
job : 部署定时任务
statefulset : 部署有状态应用
service controller和deployment controller区别
replacaSet确保Pod以指定的副本个数运行;Deployment用于管理Pod、ReplicaSet,可实现滚动升级和回滚应用、扩容和缩容。Service提供一个统一固定入口,负责将前端请求转发给Pod。
通过selector和pod中的labels,把service和pod关联起来。