前言
本文主要介绍下pod控制器(Controllers),涉及到的pod控制器仅包括ReplicaSet(副本集),DeployMent(部署),ReplicationController(复制控制器),和DaemonSet(守护程序集)。
Controllers
一般很少会直接在Kubernetes中创建单个Pod,因为单个pod不好管理,容易被删除,无自我修复功能。
通过Controller可以创建和管理多个Pod,通过创建删除来保证集群内资源数量更接近所需状态。类似恒温器。例如,如果某个node发生故障,则Controller可能会在另一个node上安排相同的替换操作来自动替换故障Pod。
Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager通过apiserver的监控机制会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。
Controller Manager管理的Controllers有很多,如:
- ReplicaSet:基于ReplicationController,维护在任何给定时间运行的稳定的副本Pod集。
- ReplicationController:确保任何时候都在运行指定数量的Pod副本。
- Deployments:基于ReplicaSet,支持滚动更新。管理无状态应用。
- StatefulSets:类似Deployments,管理有状态应用。
- DaemonSet:确保集群中每个(部分)node运行一份pod副本。
- Garbage Collection:删除一些未使用的对象,如ReplicaSet
- Job: 负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。
- CronJob: 定时调度job。
本文主要介绍和pod有关的Controllers:ReplicaSet
,DeployMent
,ReplicationController
&#x