更新和回滚

更新和回滚

在 relicasets 和 deployment 中存在 spec.strategy 指令指定更新策略

1.重建执行删除完毕一个创建一个

strategy:
type: Recreate

2.滚动更新 按照更新策略滚动更新

strategy:
rollingUpdate:
maxSurge: 25% # 更新期间可调度的最大 Pod 数量超过所需数量的pod。可以是百分比或具体是数字
maxUnavailable: 25% # 更新期间最多不可达的pod数量,可以是百分比或具体是数字
type: RollingUpdate
revisionHistoryLimit 是一个可选字段,用来设定出于会滚目的所要保留的旧 ReplicaSet 数量.系统保留 10 个旧 ReplicaSet```

在statefulset 中存在updateStrategy的更新策略

配置位置: statefulset.spec.updateStrategy

当template中内容变更是,默认使用rollingUpdate 更新所有pod,而partition的功能在于帮使用者模拟一种金丝雀更新的效果。假如你的statefuset 存在0,1,2 三个副本,你只希望对1,2副本进行更新。可以把partition设置为1。这样无论你重建pod,还是pod意外重启,新的配置都 不会对0副本造成影响。

updateStrategy:
type: RollingUpdate
rollingUpdate:
partition: 0

默认情况下你一旦修改了statefulset.spec.template中的内容,k8s 都会让pod朝着预期的方向更新【也就是你会看到pod被重建了】,当我们不希望pod立即重启时可以把更新类型改为 OnDelete

updateStrategy:
type: OnDelete

3.蓝绿

旧版本的deployment 不变,新建一个deployment 。等待新的deployment 的就绪后通过修改service 把流量调度到新的pod

  1. 金丝雀部署

旧版本的deployment 不变,新建一个deployment 。其他不变,同时访问多个版本

5.影子部署

在istio 中通过 VirtualServer 部署

6.A/B测试

在istio 中通过 VirtualServer 部署

7.回滚

rollout 用于部署回滚,可以作用于 deploy ds statefulsets

命令 子命令
kubectl rollout status
undo
restart kubectl rollout restart deployment/abc
pause/resume
history

回滚到指定版本

kubectl rollout undo deployment/openvpn --to-revision=3

查看指定版本的更新信息

kubectl rollout history deployment/openvpn --revision=1
posted @   mingtian是吧  阅读(130)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示