Deployment为 Pod和ReplicaSet提供了一个声明式(使用kubectl apply
)定义(declarative)方法,用来替代以前的ReplicationController来方便的管理版用。典型的应用场景包括:
- 定义Deployment来创建Pod和 ReplicaSet
- 滚动升级和回滚应用
- 扩容和缩容
- 暂停和继续Deployment
Deployment创建RS,RS创建Pod。Deployment通过RS管理Pod。
Deployment的yaml例子:
**
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