一个K8S系统管理多个POD容器,而多个POD是分散的分布在集群当中,面对这种情况,我们需要解决如下问题:
1、 如何保证集群内的可用Pod的数量?当出现网络环境或者是应用环境异常的时候,我们该如何保证系统中能够为我们正常提供服务的服务提供者 的数量是能够动态的保持在我们的声明式API为我们提出的要求的。
2、 如何实现POD的滚动更新。也就是进行服务的保持。
3、 如何在服务更新的过程中保证服务的可用性
4、 如果在版本更迭中遇到了问题,我们该如何快速回滚到上一个版本。
因此,我们可以使用Deployment来管理和部署我们发布的容器,他可以充当控制器的角色。
Deployment能够帮助我们保证我们期望的POD的数量,同时,我们配置POD的发布方式,控制器会按照我们的策略来更新我们的POD,保证更新的过程中,我们的POD的数量会在限定的范围之内。如果发布出现问题,那么他将能够回滚到原有版本。
在同一组Deployment内,我们运行了一个服务的多个集群副本,那么我们可以认为这些pod都是相同的,只是他们在为同一个deployment工作。如果有pod不在工作了,那么我们的deployment将会重新启动一个pod,同时帮助我们进行版本管理和回滚。