智能系统和自动系统通常会通过一个“操作系统”不断修正系统的工作状态。在Kubernetes集群中,每个Controller都是一个这样的智能系统,通过API Server提供的(List-Watch)接口实时监控集群中特定资源对象的变化,当发生各种故障导致资源对象的状态变化时,Controller会尝试将其状态调整为期望的状态。
比如:某个Node意外宕机时,Node Controller会及时发现此故障并执行自动化修复流程,确保集群始终处于预期的工作状态。
Controller Manager是Kubernetes中各种操作系统的管理者,是集群内部的管理控制中心,也是kubernetes自动化功能核心。
每种Controller都负责一种特定的资源控制器,而Controller Manager是这些Controller的核心管理者。
ServiceAccount Contoller、Token Controller与安全相关的控制器,与Service Account、Tocken密切相关。
Route Controller 是公有云厂商提供的进行节点扩容时管理节点路由的控制器,比如谷歌GCE平台里面动态添加一个虚拟节点作为Node节点时,相应的路由策略、防火墙规则等配置无需靠用户手工设置,都能依靠Route Controller自动完成。
在Kubernetes集群中与Controller Manger并重的另一个组件是Kubernetes Scheduler,它的作用是将待调度的Pod(通过API Server新创建的Pod及RC为补足副本而创建的Pod等)通过一些复杂的调度流程计算出目标节点,将Pod绑定到目标节点上。