k8s生命週期-鉤子函式
阿新 • • 發佈:2021-06-16
容器生命週期鉤子(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: /login # URI地址 port: 80 # 埠號 host: 192.168.126.100 # 主機地址 scheme: HTTP # 支援的協議,http或https # http://192.168.126.100:80/login
TCPSocket
lifecycle:
postStart:
tcpSocket:
port: 8080
演示:
[root@k8s-master ~]# vim pod-hook-exec.yaml apiVersion: v1 kind: Pod metadata: name: pod-hook-exec namespace: test spec: containers: - name: main-container image: nginx:1.17.1 ports: - name: nginx-port containerPort:80 lifecycle: postStart: exec: # 在容器啟動的時候執行一個命令,修改nginx預設首頁內容 command: ["/bin/sh","-c","echo postStart... > /usr/share/nginx/html/index.html"] preStop: exec: # 在容器停止之前停止nginx服務 command: ["/usr/sbin/nginx","-s","quit"] [root@k8s-master ~]# kubectl create -f pod-hook-exec.yaml pod/pod-hook-exec created [root@k8s-master ~]# kubectl get pod -n test -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod-hook-exec 1/1 Running 0 19s 10.244.2.31 k8s-node02 <none> <none> [root@k8s-master ~]# curl 10.244.2.31 postStart...