kubernetes 生命周期命令不是 运行

kubernetes lifecycle commands not running

我一直在尝试在 pod 终止之前将预停止到 运行 脚本(以延长终止时间直到当前作业完成),但命令似乎没有执行命令。我临时添加了一个 echo 命令,我希望在 pod 的 kubectl 日志中看到它,但我也看不到它。

这是(否则有效)部署规范的一部分:

      containers:
        - name: file-blast-app
          image:  my_image:stuff
          imagePullPolicy: Always
          lifecycle:
            preStop:
              exec:
                command: ["echo","PRE STOP!"]

有谁知道为什么这不起作用,我是否正确地期望来自 pod 的 kubectl 日志中的钩子日志?

您忘记提及要通过其执行此命令的 shell。

尝试在 YAML 中使用以下内容。

  containers:
    - name: file-blast-app
      image:  my_image:stuff
      imagePullPolicy: Always
      lifecycle:
        preStop:
          exec:
            command: ["/bin/sh","-c","echo PRE STOP!"]

此外,需要注意的一件事是 preStop 挂钩仅在 Pod 终止时执行,而不是在 Pod 完成时执行。您可以在 here.

上阅读更多内容

生命周期钩子也可以参考K8S官方文档here