钩子函数
钩子函数能够感知自身生命周期中的事件,并在相应的时刻到来时运行用户指定的程序代码。
kubernetes在主容器的启动之后(postStart)
和停止之前(preStop)
提供了两个钩子函数:
- postStart:
容器初始化环境后
,容器启动命令执行前
执行,注意由于是与启动命令异步执行,它无法保证一定在 ENTRYPOINT 之前运行完毕。如果失败,容器会被杀死,并根据 RestartPolicy 决定是 否重启 - preStop :容器终止前执行,常用于资源清理。执行完成之后容器将成功终止,如果失败,容器同样也会被杀死。在其完成之前会阻塞删除容器的操作
钩子处理器支持使用下面三种方式定义动作:
Exec命令:在容器内执行一次命令
1
2
3
4
5
6
7
8……
lifecycle:
postStart:
exec:
command:
- cat
- /tmp/healthy
……TCPSocket:在当前容器尝试访问指定的socket
1
2
3
4
5
6……
lifecycle:
postStart:
tcpSocket:
port: 8080
……HTTPGet:在当前容器中向某url发起http请求
1
2
3
4
5
6
7
8
9……
lifecycle:
postStart:
httpGet:
path: / #URI地址
port: 80 #端口号
host: 127.0.0.1 #主机地址
scheme: HTTP #支持的协议,http或者https
……
接下来,以exec方式为例,演示下钩子函数的使用,创建pod-hook-exec.yaml
文件,内容如下:
1 | apiVersion: v1 |
1 | 创建pod |