Deployment为 Pod和ReplicaSet提供了一个声明式(使用kubectl apply)定义(declarative)方法,用来替代以前的ReplicationController来方便的管理版用。典型的应用场景包括:

  • 定义Deployment来创建Pod和 ReplicaSet
  • 滚动升级和回滚应用
    • image.png
  • 扩容和缩容
  • 暂停和继续Deployment

image.png
Deployment创建RSRS创建PodDeployment通过RS管理Pod

Deployment的yaml例子:
image.png
**

Deployment更新策略:

Deployment可以保证在升级时只有一定数量的Pod是down的。默认的,它会确保至少有比期望的Pod数量少―个是up状态(最多一个不可用)
Deployment同时也可以确保只创建出超过期望数量的一定数量的Pod。默认的,它会确保最多比期望的Pod数量多一个的Pod是up的(最多1个surge )
新版k8s从 1-1变成 25%-25% (更新或删除数量)
当deployment创建pod的时候如果突然要更新,那么它会立马删除已经创建的pod立马开始更新。

您可以通过设置.spec.revisonHistoryLimit项来指定deployment最多保留多少revision 历史记录。默认的会保留所有的revision;如果将该项设置为0,Deployment就不允许回退了。

rollout成功的话会返回一个0值的Exit Code,echo $?0