Kubernetes PreStop吊钩是阻止移液器中的所有容器停止,还是只阻止其所在的容器停止?

unguejic  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(89)

关于PreStop钩子的Kubernetes文档声明如下:
PreStop钩子不是从停止Container的信号异步执行的;钩子必须在发送TERM信号之前完成其执行。
但是,它并没有说明pod中的其他容器。
在每个集装箱的PreStop吊钩完成之前,是否保护一个pod中的所有集装箱免于终止?或者每个PreStop吊钩是否仅保护其自己的集装箱?

rjee0c15

rjee0c151#

我相信preStop钩子只保护它声明的容器。
例如,在下面设置:

apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      preStop:
        exec:
          command: ["/bin/sh","-c","sleep 15"]
  - name: other-container
    image: mysql
    env:
    - name: MYSQL_ALLOW_EMPTY_PASSWORD
      value: "true"

如果我终止pod,mysql会收到SIGTERM并立即关闭,而nginx容器由于其preStop钩子而额外保持15秒的活动状态

相关问题