kubernetes生命周期命令未运行

kubernetes生命周期命令未运行,kubernetes,kubernetes-pod,Kubernetes,Kubernetes Pod,我一直试图让prestop在pod终止之前运行一个脚本(将终止时间延长到当前作业完成),但命令似乎没有执行这些命令。我临时添加了一个echo命令,我希望能在pod的kubectl日志中看到,但我也看不到 这是(正常工作的)部署规范的一部分: containers: - name: file-blast-app image: my_image:stuff imagePullPolicy: Always lif

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

这是(正常工作的)部署规范的一部分:

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

有人知道为什么这样做不起作用吗?如果我认为pod的kubectl日志中的hook日志是正确的话?

您忘了提到希望通过哪个shell执行此命令

尝试在YAML中使用以下内容

  containers:
    - name: file-blast-app
      image:  my_image:stuff
      imagePullPolicy: Always
      lifecycle:
        preStop:
          exec:
            command: ["/bin/sh","-c","echo PRE STOP!"]
另外,需要注意的一点是,只有在pod终止时才会执行预停止钩子,而不是在pod完成时。你可以阅读更多关于这方面的内容


您还可以参考K8S官方文档了解生命周期挂钩。

您忘了提到希望通过其执行此命令的shell

尝试在YAML中使用以下内容

  containers:
    - name: file-blast-app
      image:  my_image:stuff
      imagePullPolicy: Always
      lifecycle:
        preStop:
          exec:
            command: ["/bin/sh","-c","echo PRE STOP!"]
另外,需要注意的一点是,只有在pod终止时才会执行预停止钩子,而不是在pod完成时。你可以阅读更多关于这方面的内容


您还可以参考K8S官方文档了解生命周期挂钩。

嘿,谢谢您的帮助。我以前用这种方式运行了一个调用shell的脚本,但它也没有运行。我使用KEDA进行扩展,因此KEDA使用其自己的定制度量api正在减少多余的POD,我可以看到“终止”和terminationGracePeriodSeconds正在生效。我也没有在descripe中得到任何关于失败的生命周期挂钩的日志。@HappyMachine您可以做一些事情来调试。使用所有可用的钩子和程序,然后在整个生命周期中回显命令,这将在启动时提供更清晰的画面。你的YAML声明很好。此外,如果可以的话,尝试以Minikube的身份运行一个单独的集群,并尝试使用“kubectl delete”命令,然后检查它是否以相同的方式生成输出。我希望KEDA没有使用preStop hook命令输出,也没有将其显示为stdout。嘿,Abhinav,这是提到利用生命周期方法的文档(没有太多细节!),我想这意味着KEDA没有拦截,但我没有得到任何地方的回声日志,甚至描述也没有显示它失败或任何相关的错误information@HappyMachine对我确实看了那些文件,但不完整。我建议您在他们的GitHub页面上打开一个问题,因为这个外部工具正在管理您的集群。你有没有试过在没有KEDA的情况下测试这个?嘿,谢谢你的帮助。我以前用这种方式运行了一个调用shell的脚本,但它也没有运行。我使用KEDA进行扩展,因此KEDA使用其自己的定制度量api正在减少多余的POD,我可以看到“终止”和terminationGracePeriodSeconds正在生效。我也没有在descripe中得到任何关于失败的生命周期挂钩的日志。@HappyMachine您可以做一些事情来调试。使用所有可用的钩子和程序,然后在整个生命周期中回显命令,这将在启动时提供更清晰的画面。你的YAML声明很好。此外,如果可以的话,尝试以Minikube的身份运行一个单独的集群,并尝试使用“kubectl delete”命令,然后检查它是否以相同的方式生成输出。我希望KEDA没有使用preStop hook命令输出,也没有将其显示为stdout。嘿,Abhinav,这是提到利用生命周期方法的文档(没有太多细节!),我想这意味着KEDA没有拦截,但我没有得到任何地方的回声日志,甚至描述也没有显示它失败或任何相关的错误information@HappyMachine对我确实看了那些文件,但不完整。我建议您在他们的GitHub页面上打开一个问题,因为这个外部工具正在管理您的集群。你有没有试过在没有KEDA的情况下测试这个?