Kubernetes基礎: Pod刪除的grace-period設置


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]#

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM