首页/开发/CI/CD 与发布速查/terminationGracePeriodSeconds 宽限期
发布策略60 条

terminationGracePeriodSeconds 宽限期

定义 Pod 删除时从终止流程开始到 SIGKILL 的最长等待:preStop 执行与应用自行退出的总时长都要落在这段预算内。

CI/CD 与发布速查开发更新于 2026-10-13

宽限期是什么

terminationGracePeriodSeconds 定义 Pod 删除时,从终止流程开始到被 SIGKILL 强制结束的最长等待时间:preStop 钩子执行、应用处理剩余请求并自行退出的总时长都要落在这段预算内。默认 30 秒,可在 Pod 级覆盖。预算估算口径:大于「摘流延迟 + 最长请求处理时间」,长连接与上传、导出类服务需要更长宽限期,同时要确认负载均衡的读超时与重试策略与之匹配,否则宽限期只是延长了失败过程。

基本信息

默认值30 秒(Pod 级可覆盖)
计时起点Pod 终止流程开始(含 preStop)
超时后果容器被 SIGKILL
估算大于「摘流延迟 + 最长请求处理时间」

典型使用场景

  • 长请求服务:上传、导出、训练任务需要时间收尾,避免中途被杀。
  • 消息消费服务:退出前提交偏移量、完成当前批次处理。
  • 连接池清理:优雅关闭数据库连接与外部会话。
  • 滚动更新提速:摘流快、退出快,宽限期可以调小加快发布。
  • 故障注入演练:主动删除 Pod 验证终止路径的实际耗时。

调大宽限期

调大宽限期
spec:
  terminationGracePeriodSeconds: 60
  containers:
  - name: app
    image: registry.example.com/app:1.9.0
    lifecycle:
      preStop:
        exec: {command: ["sh", "-c", "sleep 5"]}  # 等摘流生效

预算构成

环节耗时来源调优方向
摘流端点摘除传播延迟preStop 等待或就绪快速翻转
收尾最长请求处理应用侧优雅退出
SIGKILL宽限期到期宽限期大于前两项之和
长连接与上传类服务需要更长的宽限期;同时确认负载均衡的读超时与重试策略与之匹配,单向调参无效。
preStop 与宽限期共用一个预算:preStop 里 sleep 太久会挤掉应用自身的收尾时间,两边时长一起核算。
多容器 Pod 共享同一份宽限期预算:任意容器没退出都会拖到期限一到全体 SIGKILL,sidecar 同样要处理 TERM 信号并尽快退出。
宽限期是 Pod 级字段:同一工作负载里不同角色需要不同收尾时间时,应拆成不同负载,或借助注入类工具按 Pod 覆盖。

易错点

  • 默认 30 秒不够慢请求使用:上传、导出任务中途被杀,按最长业务处理时间校准。
  • 只调大宽限期不做摘流:实例带着流量被删,宽限期只延长了失败过程。
  • preStop 时间超过宽限期:应用没机会收尾直接被 SIGKILL,预算分配给 preStop 与应用要明确。
  • 忽略负载均衡侧超时:网关先超时返回错误,客户端感知的失败早于服务停止。
  • 数据库类服务不处理终止信号:没有优雅关闭导致连接泄漏或数据损坏,退出路径要与业务确认。

数据来源与参考

  • Kubernetes 文档《Termination of Pods》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌