Kubernetes生命周期钩子函数
容器生命周期钩子
容器生命周期钩子(Container Lifecycle Hooks)监听容器生命周期的特定事件,并在事件发生时执行已注册的回调函数
支持两种钩子:
postStart: 容器创建后立即执行,注意由于是异步执行,它无法保证一定在 ENTRYPOINT 之前运行。如果失败,容器会被杀死,并根据 RestartPolicy 决定是 否重启
preStop:容器终止前执行,常用于资源清理。执行完成之后容器将成功终止,如果失败,容器同样也会被杀死。在其完成之前 会阻塞删除容器的操作
钩子的回调函数支持三种方式定义动作
exec:在容器内执行命令,如果命令的退出状态码是 0 表示执行成功,否则表示失败
...
lifecycle:
postStart:
exec:
command:
- cat
- /tmp/healthy
...
httpGet:向指定URL发起GET请求,如果返回的HTTP状态码在 [200, 400) 之间表示请求成功,否则表示失败
...
lifecycle:
postStart:
httpGet:
path: /healthcheck #URI地址
port: 8800 # 端口号
host: localhost # 主机地址
scheme: HTTP # 支持的协议,http或https
...
TCPSocket:在容器尝试访问指定的socket
...
lifecycle:
postStart:
tcpSocket:
port: 8080
...
示例
spec:
containers:
- name: demo
image: nginx
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo Hello > /usr/share/message"]
preStop:
exec:
command: ["/usr/sbin/nginx","-s","quit"]
Pod的终止过程
删除Pod => Pod被标记为Terminating状态 => Service移除该Pod的endpoint => kubelet筛别Terminating状态的pod,执行pod的preStop钩子 => 如果执行preStop超时(grace period) ,kubelet发送SIGTERM并等待2秒 =>
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
爱吃可爱多!
喜欢就支持一下吧
打赏
微信
支付宝