1、什么是deployment
Deployment是⼀种更⾼阶资源,⽤于部署应⽤程序并以声明的⽅
式升级应⽤,⽽不是通过ReplicationController或ReplicaSet进⾏部署,
它们都被认为是更底层的概念。
当创建⼀个Deployment时,ReplicaSet资源也会随之创建(最终会
有 更 多 的 资 源 被 创 建 )
2、replicationController 的滚动升级,roll-update
![](https://img-blog.csdnimg.cn/direct/cd212498b5f84be49af242cf4f21ff15.png)
![](https://img-blog.csdnimg.cn/direct/3f71225136d54201be7087377a177d72.png)
![](https://img-blog.csdnimg.cn/direct/b5e73fbc3da34f698538dea8580e6ab9.png)
3、相关命令
![](https://img-blog.csdnimg.cn/direct/67a916040a1e470397af6e678e51a415.png)
4、创建一个deployment
![](https://img-blog.csdnimg.cn/direct/da660f16e0ef4121925c810f7c95acfa.png)
![](https://img-blog.csdnimg.cn/direct/f27495d548f24e5c981b686094ff525a.png)
查看状态
![](https://img-blog.csdnimg.cn/direct/59ebecca754e40248e2534130335c379.png)
![](https://img-blog.csdnimg.cn/direct/5cd0dafd5fe848cc9016069b4981d7a9.png)
5、deployment的升级策略
Recreate 策略在删除旧的pod之后才开始创建新的pod。如果你的应
⽤程序不⽀持多个版本同时对外提供服务,需要在启动新版本之前完
全停⽤旧版本,那么需要使⽤这种策略。但是使⽤这种策略的话,会
导致应⽤程序出现短暂的不可⽤。
RollingUpdate 策略会渐进地删除旧的pod,与此同时创建新的
pod,使应⽤程序在整个升级过程中都处于可⽤状态,并确保其处理请
求的能⼒没有因为升级⽽有所影响。这就是Deployment默认使⽤的升
级策略。升级过程中pod数量可以在期望副本数的⼀定区间内浮动,并
且其上限和下限是可配置的。如果应⽤能够⽀持多个版本同时对外提
供服务,则推荐使⽤这个策略来升级应⽤。
6、deployment回滚升级
6.1 回滚到上一版
![](https://img-blog.csdnimg.cn/direct/ce4d8b12ab924942ab3916a86d40ab16.png)
6.2 查看版本历史
![](https://img-blog.csdnimg.cn/direct/32e45f1287ff419e9dcf28d39ae3aacb.png)
6.3 发布历史版本
![](https://img-blog.csdnimg.cn/direct/d217c344eacd4faeb80b03790a6dc5fa.png)
![](https://img-blog.csdnimg.cn/direct/d6bc45075a3b4cc4a006b740274565b5.png)
7、控制发布速率
滚动升级策略的maxSurge和maxUnavailable属性
maxUnavailable 这个属性,它表⽰最⼤不可⽤pod数量。
maxSurge 超出期望pod的数量
![](https://img-blog.csdnimg.cn/direct/f82d8d0afc4547c68856fc695e41336b.png)
![](https://img-blog.csdnimg.cn/direct/1d9be055d577411fbbb376871ac6dc2e.png)
![](https://img-blog.csdnimg.cn/direct/81c35c5823b7454691134e9f43237d73.png)
8、暂停与恢复
![](https://img-blog.csdnimg.cn/direct/f4e81f361cc64bd69aa5267c6bfd2269.png)
恢复
![](https://img-blog.csdnimg.cn/direct/cb5bd834fbc54324a1e14f6835af9f04.png)
9、deployment暂停不可以pod
![](https://img-blog.csdnimg.cn/direct/ff0a94a753cf44fe9edca054f1335c1b.png)
![](https://img-blog.csdnimg.cn/direct/ce75cbc83ab94fd7ae26bd043e5c2c57.png)
rollout status 命令显⽰只有⼀个新副本启动,之后滚动升级过程没
有再继续下去,因为新的pod⼀直处于不可⽤状态。即使变为就绪状态
之后,也⾄少需要保持10秒,才是真正可⽤的。在这之前滚动升级过
程将不再创建任何新的pod,因为当前maxUnavailable属性设置为0,所
以也不会删除任何原始的pod。