容器生命周期鈎子使它能夠感覺其自身生命周期管理中的事件,并在相應的時刻到來時運作由使用者指定的處理程式代碼。k8s為容器提供了兩種生命周期鈎子:
- postStart:于容器建立完成之後立即運作的鈎子處理器(handler),不過k8s無法確定它一定會 于容器中的entrypoint之前運作
- preStop:于容器終止操作之前立即運作的鈎子處理器,它以同步的方式調用,是以在其完成之前 會阻塞删除容器的操作調用。
鈎子處理器的實作方法由Exec和HTTP兩種,前一種在鈎子事件觸發時直接在目前容器中運作由使用者定義的指令,後一種則是在目前容器中向某url發起http請求。postStart和preStop處理器定義在spec.lifecycle嵌套字段中。
案例
準備鏡像
docker pull busybox:1.32.0
docker pull nginx:1.17.10-alpine
lifeclepod.yml
apiVersion: v1
kind: Pod
metadata:
name: lifecle-pod1
labels:
app: lifecle-pod1
spec:
containers:
- name: lifecle-pod1
image: busybox:1.32.0
imagePullPolicy: IfNotPresent
lifecycle:
postStart:
exec:
#建立/lagou/k8s/目錄,在目錄下建立index.html
command: ['mkdir','-p','/lagou/k8s/index.html']
command: ['sh','-c','sleep 5000']
restartPolicy: Always
檢視
建立pod
kubectl apply -f lifeclepod1.yml
檢視pod狀态
kubectl get pod
進入容器内部,檢視是否建立了/lagou/k8s/index.html檔案
kubectl exec -it lifecle-pod1 sh
cd /data/web
ls
每個人都有潛在的能量,隻是很容易被習慣所掩蓋,被時間所迷離,被惰性所消磨~