一、副本控制器
- Replicacation Controller
- Deployment Controller
二、Replication Controller控制器
Replication Controller的核心作用是确保集群中某个RC关联Pod的副本数量在任何时候都保持预设值。如果发现Pod副本数量超过预设值,Replication Controller会销毁一下Pod;反之,Replication Controller会自动创建新的Pod副本,知道符合条件的Pod副本数量达到预设值。
只有当Pod的重启策略是Always时,(RestartPolicy=Always),Replication Controller才会管理Pod的操作(例如:创建、销毁、重启等)。通常情况下,Pod对象被创建成功后都不会消失,唯一例外是Pod处于successd或failed状态时间过长(超时参数由系统设置),此时该Pod会被自动回收,管理该Pod的副本控制器将在其它工作节点上重新创建、运行该Pod。
RC中的Pod模板像一个模具,模具制作出来离开模板,它们之间就没有任何关系。一旦Pod创建完毕,无论模板如何变化,甚至换成一个新的模板,也不会影响已经创建的Pod。Pod可以通过修改它的标签来脱离RC的管控,该方法可以用于将Pod从集群迁移、数据修复等调试。对于被迁移的Pod副本,RC会自动创建一个新的副本替换被迁移的副本。
三、Deployment Controller
Deployment Controller在工作过程中实际控制两类相关的资源对象:Deployment以及ReplicaSet。在创建Deployment后,Deployment Controller也会创建对应的ReplicaSet,Deployment的滚动升级也是Deployment Controller自动创建新的ReplicaSet支持的。
Deployment Controller作用:
- 确保在当前集群中有且仅有N个Pod实例,N是在RC中定义的Pod副本数量
- 通过调整spec.replicas属性值来实现系统扩容或者缩容
- 通过改变Pod模板(主要是镜像版本)实现系统滚动升级。
Deployment Controller典型使用场景:
- 重新调度(Recheduling)
- 弹性伸缩
- 滚动更新