更新和回滚
更新和回滚
在 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
- 金丝雀部署
旧版本的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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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的强缓存和协商缓存
· 一文读懂知识蒸馏