kubernetes实践之四十:Pod的升级与回滚
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一:Deployment的升级举例:点击(此处)折叠或打开apiVersion: apps/v1beta1kind: Deploymentmetadata:name: nginx-deployment
千家信息网最后更新 2026年11月01日kubernetes实践之四十:Pod的升级与回滚一: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的更新策略看齐。
举例:
点击(此处)折叠或打开
- apiVersion: apps/v1beta1
- kind: Deployment
- metadata:
- name: nginx-deployment
- spec:
- replicas: 3
- template:
- metadata:
- labels:
- app: nginx
- spec:
- containers:
- - name: nginx
- images: nginx:1.7.9
- ports:
- - containerPort: 80
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的更新策略看齐。
更新
命令
策略
升级
配置
版本
控制
复杂
副本
历史
可以通过
数量
过程
镜像
选择
频繁
一次性
两个
参数
只有
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司排名
南京欣网互联网络科技有限公司
广州为想互联网科技有限公司
互联网属科技
没上市的科技互联网公司
关于新基建和互联网科技
互联网金融 科技金融
互联网科技公司怎么样
融势互联网科技
融贸通互联网科技
伴你行互联网科技有限公司
上游互联网科技
互联网高科技企业
中正互联网科技招聘
深圳国际航运科技和互联网
中国互联网十大科技股排名
中国互联网有什么科技
云南互联网科技学费
易租星互联网科技有限公司
盐城市攀科互联网科技有限公司
紫鲸互联网科技
唐信互联网科技
互联网科技大会
大白互联网科技
互联网科技宣传片
国外互联网科技网站
银川新华互联网科技学校地址
互联网公司黑科技创始人
深圳艾果互联网通讯科技
西安有哪些互联网高科技企业