侧边栏壁纸
  • 累计撰写 5 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

K8s滚动更新0宕机秘籍 | 血泪经验贴

运维匠
2025-04-07 / 0 评论 / 0 点赞 / 18 阅读 / 0 字
温馨提示:
本文最后更新于2025-04-07,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

🌟 核心思路

滚动更新的灵魂在于「温柔迭代」!既要让新版本悄悄上岗,又要保证旧版本优雅退休,全程服务不卡顿~下面直接上干货!👇


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,让老板夸你“稳如泰山”! 💃

(👉 更多运维骚操作,可以关注【运维匠】公众号哦~)

0

评论区