演示 Lifecycle 的配置
apiVersion: v1
kind: Pod
metadata:
name: lifecycle-demo
spec:
containers:
- name: demo-container
image: nginx
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo hello from the postStart handler"]
preStop:
exec:
command: ["/usr/sbin/nginx", "-s", "quit"]
postStart
在容器启动后立即执行一个指定的操作。虽然 postStart 定义的操作是在 docker 容器 ENTRYPOINT 执行之后,但是并不严格保证顺序。也就是说, postStart 启动时, ENTRYPOINT 有可能尚未结束。如果 postStart 执行超时或出错,kubernetes 会在该 pod 的 Events中报出该容器启动失败的错误信息,导致 Pod 也处于失败状态。
preStop
发生的时机是容器被结束之前。 preStop 操作的执行是同步的。所以它会阻塞当前的容器结束流程,直到这个 Hook 定义操作完成之后,才允许容器被结束。