首页/云/Kubernetes 速查/优雅终止与 terminationGracePeriodSeconds

优雅终止与 terminationGracePeriodSeconds

删除 Pod 的标准流程:标记 Terminating → 摘除端点 → 发 SIGTERM → 等待宽限期 → SIGKILL;preStop 钩子可在信号前执行收尾。

Kubernetes 速查云更新于 2026-10-13

机制定位

删除 Pod 不是瞬间消失,而是走一套固定流程:对象标记为 Terminating、从端点列表摘除、发送 SIGTERM 给容器主进程、等待 terminationGracePeriodSeconds 秒、仍未退出则发送 SIGKILL。适用平台是 Kubernetes。可以在信号之前用 preStop 钩子执行收尾动作(比如等负载均衡摘除、通知注册中心下线)。理解这套时序,才能解释「发布时出现的秒级 502」和「Pod 迟迟不退」。

基本信息

适用平台Kubernetes,Pod 级生命周期
宽限期terminationGracePeriodSeconds,默认 30 秒
信号顺序preStop 钩子 → SIGTERM → 宽限期到 → SIGKILL
摘除时机终止开始即标记,端点摘除与信号发送存在并行,故需要缓冲

典型使用场景

  • 消除发布抖动:用 preStop sleep 等端点摘除完成,再开始退出接收新请求
  • 缩短下线时间:任务型容器提前处理信号,宽限期可从 30 秒调到更短
  • 长任务收尾:数据同步类容器需要更长的宽限期完成落盘
  • 排查 Pod 卡在 Terminating:确认是进程不响应信号还是卷未释放
  • 排查优雅关闭失败:应用未注册信号处理时会被强杀,连接被硬切

配置示例

配置示例
spec:
  terminationGracePeriodSeconds: 60
  containers:
    - name: app
      lifecycle:
        preStop:
          exec:
            command: ["sh", "-c", "sleep 5"]   # 等负载均衡摘除后再开始退出

观察终止过程

观察终止过程
kubectl delete pod web-x --wait=false                # 不阻塞,观察整个过程
kubectl get pod web-x -w                              # 状态从 Running 到 Terminating 再到消失
kubectl describe pod web-x | grep -i -A3 graceful      # 宽限期与终止原因
kubectl get pod web-x -o jsonpath='{.metadata.deletionGracePeriodSeconds}'
kubectl get endpoints web-svc                          # 观察端点摘除时间点

时序与影响

阶段发生的事常见问题
标记终止对象进入 Terminating,开始摘除端点摘除有延迟,此时仍可能有流量打到
preStop钩子执行,计入宽限期钩子写太久会挤掉应用自身的退出时间
SIGTERM主进程收到信号,应停止接收并排空应用不处理信号则直接进入下一步
SIGKILL宽限期结束强行终止连接被硬切,出现 502 与超时
宽限期默认 30 秒;超过未退出 kubelet 发 SIGKILL,preStop 的执行时间也计入宽限期,两者要一起核算。
终态 Pod 的删除是终止而非隔离,误删有状态服务的 Pod 会立刻触发重建,数据落盘与连接排空都需要应用配合。

易错点

  • 应用不处理 SIGTERM 时会被 SIGKILL 强杀,务必在代码里注册信号处理并完成连接排空,否则每次发布都会丢请求
  • preStop 的 sleep 是常见「等 Endpoints 摘除」技巧,但时间要小于宽限期,否则直接被 kill 反而更快失败
  • 把宽限期调得过大掩盖退出逻辑缺陷:长时间处于 Terminating 会拖慢发布与节点维护,应先修应用再动参数
  • 用 --force --grace-period=0 强行删除:跳过优雅终止,可能留下共享存储上的脏数据

数据来源与参考

  • Kubernetes 官方文档 · Pod Lifecycle(Termination)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌