controller manager
是一个守护进程,嵌入了 Kubernetes 附带的核心控制循环。在 Kubernetes 中,控制器是一个control loop,它通过 apiserver 监视集群的共享状态,并进行更改,尝试将当前状态移至所需状态。目前 Kubernetes 附带的控制器示例包括replication controller, endpoints controller, namespace controller, serviceaccounts controller
等
Controller Manager可以认为是个状态机。它不断扫描系统的当前状态
和目标状态
进行对比,如果检测到有差异,则采取相应的措施,保证达到目标状态。
之前说过kubernetes核心功能是desired state management
,这是功能就是通过Controller Manager
来实现的。
例如Node-Controller
会不断扫描Node状态(每5秒钟一次)。如果某一时刻某个Node挂了,而且在5分钟内没有恢复,则这个node会被evict。
从逻辑上讲,每个controller都是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件并在单个进程中运行。
这些控制器包括:
Node Controller
:负责在节点出现故障时进行通知和响应。Replication Controller
:负责为系统中的每个replicaSet对象维护正确的 Pod 数量。Endpoints Controller
:填充 Endpoints 对象(即加入 Services 和 Pod)。Service Account & Token Controllers:
:为新命名空间创建默认帐户和 API 访问令牌。这些Controller统一在Kube-Controller-Manager
下运行: