平滑重启本质是旧Pod安全退出、新Pod接管流量的过程,需通过控制器滚动更新、配置preStop钩子与优雅终止窗口、合理设置就绪探针,并验证业务层面无异常。
Pod 本身没有“重启”操作,所谓平滑重启,本质是让旧 Pod 安全退出、新 Pod 顺利接管流量的过程。关键不在删或启,而在控制生命周期、信号传递和流量切换节奏。
直接删除 Pod 或用 kubectl delete pod 会中断服务,不推荐。正确做法是操作上层控制器:
kubectl rollout restart deployment/<name> -n <namespace></namespace></name>,Kubernetes 会按 maxSurge 和 maxUnavailable 策略逐个替换 Podkubectl rollout restart statefulset/<name></name>,它按序号从高到低滚动重建(支持 RollingUpdate 策略)让应用有时间处理完存量请求,而不是被 SIGKILL 强杀:
lifecycle.preStop,例如执行 curl -X POST http://localhost/shutdown 或调用应用关闭接口terminationGracePeriodSeconds(默认 30 秒),确保 preStop 有足够时间执行;若应用关闭慢,可设为 60–120 秒防止新请求打到尚未就绪或正在退出的 Pod:
readinessProbe 必须配置,且 failureThreshold 和 periodSeconds 要合理(如 3×5s)不能只看 Pod 状态,要观察业务层面表现:
kubectl rollout status deployment/<name></name> 确认更新完成,再结合 kubectl get events -w 查看是否有 FailedCreate、FailedKillPod 等事件