kubelet 使用 liveness probe(存活探針)來確定何時重啟容器。例如,當應用程序處於運行狀態但無法做進一步操作,liveness 探針將捕獲到 deadlock,重啟處於該狀態下的容器,使應用程序在存在 bug 的情況下依然能夠繼續運行下去。
[root@kbs1 yml]# cat jianpod.yml
apiVersion: v1
kind: Pod
metadata:
name: jian-pod-mariadb
labels:
name: mariadb-label
env: test
testl: testlabel
spec:
containers:
- name: mysql-jian-image
image: mysql_slave
imagePullPolicy: Never
ports:
- containerPort: 3306
livenessProbe:
tcpSocket:
port: 3306
nodeSelector:
node: "jiannode1"
探針失敗:(如果沒有探針即便3306端口不通該pod也會顯示正常狀態)
[root@kbs1 yml]# kubectl describe pod jian-pod-mariadb
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 15s default-scheduler Successfully assigned default/jian-pod-mariadb to 192.168.135.196
Normal Pulled 14s kubelet, 192.168.135.196 Container image "192.168.135.199:5000/mysql_jian_v2" already present on machine
Normal Created 14s kubelet, 192.168.135.196 Created container mysql-jian-image
Normal Started 13s kubelet, 192.168.135.196 Started container mysql-jian-image
Warning Unhealthy 0s kubelet, 192.168.135.196 Liveness probe failed: dial tcp 172.30.89.2:3306: connect: connection refused
[root@kbs1 yml]# kubectl get pods
NAME READY STATUS RESTARTS AGE
jian-pod-mariadb 1/1 Running 1 116s
探針正常:
[root@kbs1 yml]# kubectl describe pod jian-pod-mariadb
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 12s default-scheduler Successfully assigned default/jian-pod-mariadb to 192.168.135.196
Normal Pulled 11s kubelet, 192.168.135.196 Container image "mysql_slave" already present on machine
Normal Created 11s kubelet, 192.168.135.196 Created container mysql-jian-image
Normal Started 11s kubelet, 192.168.135.196 Started container mysql-jian-image
基於http探針:
livenessProbe:
httpGet:
path: /index.html
port: 80
基於exec探針:
livenessProbe:
exec:
command:
- cat
- /tmp/jiantest
延遲探針:
livenessProbe:
exec:
command:
- cat
- /tmp/jiantest
initialDelaySeconds: 5