博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kubernetes Pod的升级与回滚
阅读量:5366 次
发布时间:2019-06-15

本文共 3023 字,大约阅读时间需要 10 分钟。

一:Deployment的升级

1.通过kubectl set image命令为Deployment设置新的镜像名称
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1

2.使用kubectl edit命令修改Deployment的配置 将spec.template.spec.containers[0].images 从nginx:1.7.9 更改为1.9.1; 保存退出后,kubernetes会自动升级镜像。

3.通过kubectl rollout status 可以查看deployment的更新过程

在Deployment的定义中,可以通过spec.strategy指定Pod更新的策略:

1.Recreate(重建): 设置spec.strategy.type=Recreate,表示Deployment在更新Pod时,会先杀掉所有正在运行的Pod,然后创建新的Pod.

2.RollingUpdate(滚动更新):以滚动更新的方式来逐个更新Pod,可以通过设置spec.strategy.rollingUpdate下的两个参数(maxUnavailable和maxSurge)来控制滚动更新的过程。

通常来说,不鼓励更新Deployment的标签选择器,因为这样会导致Deployment选择的Pod列表发生变化,也可能与其它控制器产生冲突。

:Deployment的回滚

所有Deployment的发布历史记录都保留在系统中,如果要进行回滚:
1. 用kubectl rollout history命令检查这个Deployment部署的历史记录
2.用kubectl rollout undo deployment/nginx-deployment 撤销本次发布回滚到上一个部署版本
3.用kubectl rollout undo deployment/nginx-deployment --to-revision=2 回滚到指定版本
三:暂停和恢复Deployment的部署操作,以完成复杂的修改
对应一次复杂的Deployment配置修改,为了避免频繁触发Deployment的更新操作,可以暂停Deployment的更新操作,然后进行配置修改,再回复Deployment.一次性触发完整的更新操作。
使用命令:kubectl rollout pause deployment/nginx-deployment
四:使用kubectl rolling-update命令完成RC的滚动升级
对应RC的滚动升级,Kubernetes还提供了一个kubectl rolling-update 命令进行实现。该命令创建一个新的RC,然后自动控制旧的RC中的副本数量逐渐减少到0,同时新的RC中的Pod副本的数量从0逐步增加到目标值,来完成Pod的升级。 需要注意的是新旧RC要再同一个命名空间内。
五:其它管理对象的更新策略
1.DaemonSet的更新策略
a.OnDelete:  默认配置。只有旧的Pod被用户手动删除后,才触发新建操作。
b.RollingUpdate: 就版本的Pod将被自动杀掉,然后自动创建新版本的DaemonSet Pod.
2.StatefulSet的更新策略
StatefulSet的更新策略正逐渐向Deployment和DaemonSet的更新策略看齐。

原文:http://blog.itpub.net/28624388/viewspace-2154452/

1.通过kubectl set image命令为Deployment设置新的镜像名称
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1

2.使用kubectl edit命令修改Deployment的配置 将spec.template.spec.containers[0].images 从nginx:1.7.9 更改为1.9.1; 保存退出后,kubernetes会自动升级镜像。

3.通过kubectl rollout status 可以查看deployment的更新过程

在Deployment的定义中,可以通过spec.strategy指定Pod更新的策略:

1.Recreate(重建): 设置spec.strategy.type=Recreate,表示Deployment在更新Pod时,会先杀掉所有正在运行的Pod,然后创建新的Pod.

2.RollingUpdate(滚动更新):以滚动更新的方式来逐个更新Pod,可以通过设置spec.strategy.rollingUpdate下的两个参数(maxUnavailable和maxSurge)来控制滚动更新的过程。

通常来说,不鼓励更新Deployment的标签选择器,因为这样会导致Deployment选择的Pod列表发生变化,也可能与其它控制器产生冲突。

:Deployment的回滚

所有Deployment的发布历史记录都保留在系统中,如果要进行回滚:
1.用kubectl rollout history命令检查这个Deployment部署的历史记录
2.用kubectl rollout undo deployment/nginx-deployment 撤销本次发布回滚到上一个部署版本
3.用kubectl rollout undo deployment/nginx-deployment --to-revision=2 回滚到指定版本
三:暂停和恢复Deployment的部署操作,以完成复杂的修改
对应一次复杂的Deployment配置修改,为了避免频繁触发Deployment的更新操作,可以暂停Deployment的更新操作,然后进行配置修改,再回复Deployment.一次性触发完整的更新操作。
使用命令:kubectl rollout pause deployment/nginx-deployment
四:使用kubectl rolling-update命令完成RC的滚动升级
对应RC的滚动升级,Kubernetes还提供了一个kubectl rolling-update 命令进行实现。该命令创建一个新的RC,然后自动控制旧的RC中的副本数量逐渐减少到0,同时新的RC中的Pod副本的数量从0逐步增加到目标值,来完成Pod的升级。 需要注意的是新旧RC要再同一个命名空间内。
五:其它管理对象的更新策略
1.DaemonSet的更新策略
a.OnDelete:  默认配置。只有旧的Pod被用户手动删除后,才触发新建操作。
b.RollingUpdate: 就版本的Pod将被自动杀掉,然后自动创建新版本的DaemonSet Pod.
2.StatefulSet的更新策略
StatefulSet的更新策略正逐渐向Deployment和DaemonSet的更新策略看齐。

原文:http://blog.itpub.net/28624388/viewspace-2154452/

转载于:https://www.cnblogs.com/linyouyi/p/11573791.html

你可能感兴趣的文章
java web项目中后台控制层对参数进行自定义验证 类 Pattern
查看>>
图论学习一之basic
查看>>
Java的Array和ArrayList
查看>>
记录Ubuntu 16.04 安装Docker CE
查看>>
安东尼奥·维瓦尔第——巴洛克音乐的奇葩
查看>>
pandas的增删改查
查看>>
HDU 5933/思维
查看>>
字节对齐
查看>>
Design Tic-Tac Toe
查看>>
SQL中的去重操作
查看>>
uva 12097 - Pie(二分,4级)
查看>>
mongodb索引
查看>>
nginx源码学习资源(不断更新)
查看>>
【bzoj2882】工艺 后缀自动机+STL-map
查看>>
[redis] redis
查看>>
Linux的加密认证功能以及openssl详解
查看>>
[Tools] 使用XP远程登录Win8系统
查看>>
【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
查看>>
HDU- 2265 Encoding The Diary
查看>>
socket基本概念
查看>>