k8s pod控制器概述
pod控制器由master的kube-controller-manager组件提供,常见控制器有ReplicationController、ReplicaSet、Deployment、DaemonSet、StatefulSet、Job和ConJob等,它们以不同的方式来管理pod资源对象
master的各组件中,apiserver仅负责将资源存储于etcd中,并将发生的变化通知给各客户端程序,如kubelet、kube-scheduler、kube-porxy和kube-controller-manager等,kube-scheduler监控到处于未绑定状态的pod对象出现时则调度器会为其挑选适合的工作节点
controller manager作为集群内部的管理控制中心,负责集群内的node、pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态,而这些就是kube-controller-manager的任务
pod控制器类型
- ReplicaSet:
1、用户期望副本数
2、标签选择器
3、pod资源模板
标签选择器选择由自己管理和控制的pod副本,如果说通过标签选择器选到的数控少于指定pod数量则使用pod资源模板新新建。
ReplicaSet(不直接使用)管理无状态pod资源,并确保pod资源精确反应用户所定义的目标数量
- Deployment:
Deployment通过ReplicaSet来控制pod,管理无状态应用目前最好用的控制器
Deployment分配多个pod时,可以一个节点存放多个pod,也可以一个都没有,这不取决于Deployment而取决于调度算法
- DaemonSet
确保集群中的每个节点都仅运行一个特定pod
- Job
任务完成即退出
- C