🌟 核心思路
滚动更新的灵魂在于「温柔迭代」!既要让新版本悄悄上岗,又要保证旧版本优雅退休,全程服务不卡顿~下面直接上干货!👇
1️⃣ 健康小助手:Readiness Probes 💉
作用:让Kubernetes知道你的Pod什么时候“能接客”!
配置示例:
readinessProbe:
httpGet:
path: /healthz # 改成你的健康检查接口
port: 80
initialDelaySeconds: 5 # 容器启动后5秒开始检查
periodSeconds: 10 # 每10秒检查一次
重点:
- ✅ 新Pod通过检查后才会接收流量,避免半成品上岗!
- ❌ 如果检查失败,K8s自动屏蔽流量,超贴心~
2️⃣ 零宕机秘诀:maxUnavailable & maxSurge 🛡️
配置模板:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0 # 不允许任何Pod失联!
maxSurge: 1 # 最多多启动1个Pod加速更新
参数解读:
maxUnavailable: 0
:更新时必须保证所有旧Pod在线,稳如老狗!maxSurge: 1
:允许临时多1个新Pod,更新速度↑但资源占用可控~
3️⃣ 温柔告别机制:PreStop Hook 🛌
作用:给旧Pod一个“收拾行李”的时间,避免强制退场导致请求丢失!
配置示例:
lifecycle:
preStop:
exec:
command: ["/bin/sh", "-c", "sleep 10"] # 延迟10秒再关闭
场景:
- 旧Pod收到终止信号后,先睡10秒,等K8s把流量切到新Pod再下岗~
- 💡 如果是微服务,可以改成执行「优雅关闭脚本」!
🌈 附赠小贴士
- 灰度发布:先更新1个Pod试水,没问题再全量更新!
- 监控报警:更新时盯紧日志和监控(比如Prometheus),异常立马回滚!
- 回滚命令:一键回到解放前👉
kubectl rollout undo deployment/my-deployment
总结:滚动更新的核心就是「细水长流」!用好健康检查+参数调控,你的服务就能像德芙一样纵享丝滑~🚀 快把这些配置塞进你的YAML,让老板夸你“稳如泰山”! 💃
(👉 更多运维骚操作,可以关注【运维匠】公众号哦~)
评论区