healthy
[root@master probe]#
[root@master probe]# kubectl get pods
NAME READY STATUS RESTARTS AGE
liveness-exec 1/1 Running 0 27s
[root@master probe]# kubectl get pods
NAME READY STATUS RESTARTS AGE
liveness-exec 1/1 Running 0 31s
[root@master probe]# kubectl exec -it liveness-exec – ls /tmp
[root@master probe]#
测试上面的意义就是,文件没了就没了,下面定义prebe以后,文件没了,可以自动重新给我们生成罢了【重新生成也就是重启pod,回到pod的初始状态】
kubectl describe pod pod_name
可以查看重启过程哦
通过重启来解决问题—重启大法–所谓的重启,就是删除这个pod创建同名的pod【和手动的区别就是,这个创建时间不会重头开始,会累计,只能看到restarts的数量在增多】
command
在容器生命的前30秒,有一个/tmp/healthy档案。所以在前30秒,命令cat /tmp/healthy
返回成功代码。30秒后,cat /tmp/healthy
返回失败代码【5秒左右检测】,所以35+30删除等待,大概75秒左右容器会重启。
所以流程就是,/tmp文件在30秒左右存在,30秒以后文件就没了,75秒以后,容器重启,文件又存在
[root@master probe]# cat pod2.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: podliveness2
spec:
#terminationGracePeriodSeconds: 0
containers:
- name: liveness
image: busybox
imagePullPolicy: IfNotPresent
args:
-
/bin/sh
-
-c
-
touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
-
cat
-
/tmp/healthy
initialDelaySeconds: 5 # 容器启动的5s内不检测
periodSeconds: 5 # 每5s检测一次
[root@master probe]#
开始测试,注意看下面注释说明
创建并观察容器时间和tmp文件,均正常
[root@master probe]# kubectl apply -f pod2.yaml
pod/podliveness2 created
[root@master probe]# kubectl get pods
NAME READY STATUS RESTARTS AGE
podliveness2 1/1 Running 0 2s
[root@master probe]# kubectl exec -it podliveness2 – ls /tmp
healthy
[root@master probe]# kubectl get pods
NAME READY STATUS RESTARTS AGE
podliveness2 1/1 Running 0 17s
[root@master probe]# kubectl exec -it podliveness2 – ls /tmp
healthy
[root@master probe]# kubectl get pods
NAME READY STATUS RESTARTS AGE
podliveness2 1/1 Running 0 26s
[root@master probe]# kubectl exec -it podliveness2 – ls /tmp
healthy
[root@master probe]#
30秒以后,tmp文件小时,等待75秒以后,容器重启
[root@master probe]# kubectl get pods
NAME READY STATUS RESTARTS AGE
podliveness2 1/1 Running 0 33s
[root@master probe]# kubectl exec -it podliveness2 – ls /tmp
[root@master probe]#
[root@master probe]# kubectl get pods
NAME READY STATUS RESTARTS AGE
podliveness2 1/1 Running 0 42s
[root@master probe]# kubectl get pods
NAME READY STATUS RESTARTS AGE
podliveness2 1/1 Running 0 54s
[root@master probe]# kubectl get pods
NAME READY STATUS RESTARTS AGE
podliveness2 1/1 Running 0 65s
[root@master probe]# kube