Kubernetes基礎: Pod刪除的grace-period設置
在Kubernetes中提供了grace-period,在Pod刪除時此選項會起作用,會延遲一定時長才進行刪除,缺省未設定的情況下會等待30s中之后刪除。
為什么要延遲刪除
因為在刪除之前,很多容器化的應用往往還有一些操作需要處理,而這些都需要一些時間,直接粗暴地關閉往往會帶來后遺症。
現象再現
Pod准備
- YAML文件
[root@host131 Pod]# cat pod.yaml --- apiVersion: v1 kind: Pod metadata: name: testbox namespace: default spec: containers: - name: testbox-host image: busybox:latest command: ["sleep"] args: ["1000"] ... [root@host131 Pod]#
創建Pod與結果確認日志如下所示:
[root@host131 Pod]# kubectl get pods No resources found in default namespace. [root@host131 Pod]# kubectl create -f pod.yaml pod/testbox created [root@host131 Pod]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES testbox 1/1 Running 0 8s 10.254.152.5 192.168.163.131 <none> <none> [root@host131 Pod]#
Pod刪除 與刪除時間確認
對Pod刪除動作進行計時,發現為32秒
[root@host131 Pod]# time -p kubectl delete pod testbox pod "testbox" deleted real 32.12 user 0.10 sys 0.02 [root@host131 Pod]#
如果非命令行方式,可以考慮使用如下類似命令進行確認
執行命令:i=0; while [ $i -lt 100 ]; do i=
expr $i + 1; date; kubectl get pods -o wide; sleep 1; done
指定刪除延遲時間: 0s
指定grace-period為0,整體刪除時間會明顯降低(根據機器實時性能以及鏡像的差別,多次執行可能會有一定出入,但是基本肯定小於缺省方式)
[root@host131 Pod]# kubectl create -f pod.yaml pod/testbox created [root@host131 Pod]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES testbox 1/1 Running 0 7s 10.254.152.5 192.168.163.131 <none> <none> [root@host131 Pod]# [root@host131 Pod]# time -p kubectl delete pod testbox --grace-period=0 pod "testbox" deleted real 8.08 user 0.10 sys 0.03 [root@host131 Pod]#
