Controller通过API Server提供的(List-Watch)接口实时监控集群中特定资源的状态变化,将资源状态调整为期待的状态。
Controller Manager是Kubernetes中各个Controller的管理者,是集群内部的管理中心,是Kubernetes自动化功能的核心。
包括Replication Controller,Node Controller,ResourceQuota Controller,Namespace Controller,ServiceAccount Controller,Token Controller,Service Controller,Endpoint Controller共8种。
Token Controller,Service Controller与安全相关,与ServiceAccount Controller密切相关。
Replication Controller保证任何时候集群中某个RC关联的Pod副本数量都保持预设值。只要Pod的RestartPolicy=Always时,Replication Controller才会管理该Pod的操作。
Node Controller,通过API Server实时获取Node相关信息,管理和监控集群中各个Node的相关控制功能。
ResourceQuota Controller,资源配额管理确保指定的资源对象在任何时候都不会超量占用系统物理资源,避免整个系统意外宕机,保证整个集群的平稳运行和稳定性。
(1)容器级别,对CPU和memory进行限制。(2)Pod级别,对一个Pod内所有容器的可用资源进行限制。(3)Namespace级别,为Namespace级别的资源限制,包括:Pod数量,RC数量,Service数量,ResourceQuota数量,Secret数量,可持有的PV数量。
Namespace Controller,定时获取Namespace的信息。
Service Controller与Endpoint Controller,Endpoints(address,port)表示一个Service对应的所有Pod副本的访问地址,Endpoint Controller负责生成和维护所有Endpoints对象,监听Service和对应的Pod副本的变化。
kube-proxy进程获取每个Service的Endpoints,实现来Service的负载均衡功能。
Service Controller是Kubernetes集群与外部云平台之间的一个接口控制器。监听Service的变化。