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-2025 CODEPRJ.COM