kubernetes实践之四十:Pod的升级与回滚
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,一:Deployment的升级举例:点击(此处)折叠或打开apiVersion: apps/v1beta1kind: Deploymentmetadata:name: nginx-deployment
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
学生网络安全学情分析
信息技术与网络安全专业就业
数据库维护制度
上海源自互联网科技有限公司
互联网金融科技幻想
安徽计算机应用软件开发服务费
数据库链表查询优化
腾讯网络安全运营中心
无锡软件开发费用
软件开发的市场分析怎么写
顺丰软件开发类怎么样
网络安全项目产生的经济效益
fifa21无法登录服务器
my sql数据库安装
网络安全责任的情况汇报
哪种软件开发模型好
我的世界服务器时间变量
武汉大学网络安全学院评价
吃鸡游戏里服务器怎么选
应用程序和数据库交互的接口
临汾公安局网络安全
河西区智能软件开发报价技术规范
网络安全从我做起宣传语
深美互联网络科技
远程服务器闪退
网络技术专业行业企业调研
线上pos机服务器异常
谈谈你对网络安全技术的认识
网络安全月宣传画模板
论高数和计算机网络技术的关系