如何监控`preStop`命令的执行?

时间:2017-10-02 12:18:34

标签: kubernetes

我试图使用pod的生命周期事件。问题是来自preStop的命令根本没有运行。有没有办法监控它是否已启动?容器的日志是空的。

      lifecycle:
        preStop:
          exec:
            command: [ "/bin/sh", "-c", "/clean.sh" ]

3 个答案:

答案 0 :(得分:2)

我只想添加preStop钩子,吊舱可能已终止,无法用于describe

查看preStop错误日志的另一种方法是通过kubectl事件:

kubectl get events | grep FailedPreStopHook

示例:

kubectl get events | grep FailedPreStopHook                                    
5m33s       Warning   FailedPreStopHook   pod/pod-name-59988c4675-79q4p                              
Exec lifecycle hook ([/bin/kill -s SIGQUIT 1]) for Container "container_name" in Pod "pod-name-59988c4675-79q4p_namespace(556dc3d2-9da4-11ea-bca3-00163e01eb9a)" failed - error: 
command '/bin/kill -s SIGQUIT 1' exited with 1: kill: can't kill pid 1: Operation not permitted

答案 1 :(得分:0)

来自https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#debugging-hook-handlers

  

Hook处理程序的日志未在Pod事件中公开。如果处理程序由于某种原因失败,它会广播一个事件。 [...]对于 PreStop ,这是 FailedPreStopHook 事件。您可以通过运行kubectl describe pod <pod_name>来查看这些事件。以下是运行此命令[...]

的事件的一些示例输出

答案 2 :(得分:0)

https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#debugging-hook-handlers

  

Hook处理程序的日志未在Pod事件中公开。如果处理程序由于某种原因失败,它将广播事件。 [...]对于 PreStop ,这是 FailedPreStopHook 事件。您可以通过运行kubectl describe pod <pod_name>来查看这些事件。这是运行此命令[...]

的事件的一些示例输出