【问题标题】:Kubernetes state of the pod when running preStop command运行 preStop 命令时 Pod 的 Kubernetes 状态
【发布时间】:2016-08-19 23:35:31
【问题描述】:

当我删除一个 pod 时,我正在使用 preStop 命令优雅地关闭我的服务器应用程序。 pod/容器在运行 preStop 命令时的状态是什么?例如,它会在运行 preStop 命令之前停止网络接口吗?

lifecycle:
    preStop:
      exec:                
        command: ["kill", "-SIGTERM", "`pidof java`"]

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    在 preStop 钩子运行时,pod 的状态不会改变 -- preStop 钩子在容器中运行,然后容器停止。

    【讨论】:

      【解决方案2】:

      当一个 pod 应该被终止时,Kubernetes 会执行以下操作:

      1. 将 Pod 切换到 Terminating 状态
      2. 调用preStop 挂钩(如果有)
      3. 一旦preStop钩子结束,它就会向容器中的主进程(PID 1)发送一个SIGTERM
      4. 如果容器没有在终止宽限期内终止(默认为 30 秒 - 从点 #1 开始计数),Kubernetes 将向容器的主进程发送 SIGKILL 以暴力停止它

      更多细节在这里: Graceful shutdown of Kubernetes Pods

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 2019-07-15
        • 2020-09-07
        • 2016-04-08
        • 2020-01-25
        • 1970-01-01
        • 2019-06-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多