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