1、容器生命周期钩子函数
生命周期钩子函数( lifecycle hook )是编程语言( 如Angular )中常用的生命周期管理的组件,它实现了程序运行周期中的关键时刻的可见性,并赋予用户为此采取某种行动的能力。类似地, 容器生命周期钩子使它能够感知其自身生命周期管理中的事件,并在相应的时刻到来时运行由用户指定的处理程序代码。
Kubernetes 支持 postStart 和 preStop 事件。
postStart:于容器创建完成之后立即运行的钩子处理器( handler ),不过Kubernetes无法确保它一定会于容器中的ENTRYPOINT之前运行
preStop :于容器终止操作之前立即运行的钩子处理器,它以同步的方式调用,因此在其完成之前会阻塞删除容器的操作的调用。
2、实现方式
2.1、Exec
钩子事件触发时直接在当前容器中运行由用户定义的命令
apiVersion: v1
kind: Pod
metadata:
name: lifecvcle-demo
spec:
containers:
- name: lifecycle-demo-container
image: ikubernetes/myapp:vl
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c","echo 'lifecycle hookshandler' > /usr/share/nginx/html/test.html"]
#command: [ "/bin/sh", "-c", "curl -k https://x.x.x.x/apis/v1/crash" ] #向一个接口发请求
2.2、HTTP
在当前容器中向某指定URL 发起HTTP 请求
containers:
- name: hadoop
image: "{{ .Values.image.hadoop.repository }}:{{ .Values.image.hadoop.tag }}"
imagePullPolicy: {{ .Values.image.hadoop.pullPolicy | quote }}
lifecycle:
preStop:
httpGet:
port: 8080
path: shutdown #这个请求发送到http://<Pod_IP>:8080/shutdown