Deployment Controller 在工作过程中实际上是在控制两类相关的资源对象:Deployment 和 ReplicaSet。在我们创建 Deployment 资源对象之后,Deployment Controller 也默默创建了对应的 ReplicaSet,Deployment 的滚动升级也是 Deployment Controller 通过自动创建新的 ReplicaSet 来支持的。
Deployment Controller 的作用如下所述:
- 确保在当前集群中有且仅有 N 个 Pod 实例,N 是在 RC 中定义的 Pod 副本数量。
- 通过调整 spec.replicas 属性的值来实现系统扩容或者缩容。
- 通过改变 Pod 模板(主要是镜像版本)来实现系统的滚动升级。
Deployment Controller 的典型使用场景,如下所述:
- 重新调度(Rescheduling)。如前面所述,不管想运行 1 个副本还是 1000 个副本,副本控制器都能确保指定数量的副本存在于集群中,即使发生节点故障或 Pod 副本被中止运行等意外状况。
- 弹性伸缩(Scaling)。手动或者通过自动扩容代理修改副本控制器 spec.replicas 属性的值,非常容易实现增加或减少副本的数量。
- 滚动更新(Rolling Updates)。副本控制器被设计成通过逐个替换 Pod 来辅助服务的滚动更新。