存活探针:容器健康状态检查
使用存活探针(livenessProbe):
Kubemetes可以通过存活探针检查容器是否在运行。可以为pod中的每个容器单独指定存活探针。如果探测失败,Kubemetes将定期执行探针并重新启动容器。
livenessProbe 默认探测频率是10s一次,可通过periodSeconds来设定。通过initialDelaySeconds 设置第一次探测前的等待时间
具体使用方法:
kubectl explain pod.spec.containers.livenessProbe
kubectl explain pod.spec.containers.livenessProbe.httpGet
主要三种探测容器机制:
-
针对容器的ip,指定路径和端口,执行HTTP GET请求。响应状态码是2xx或3xx则探测成功。
-
指定端口,尝试建立TCP连接,连接建立探测成功。
-
指定command,在容器里执行命令,根据命令返回值判断是否成功。
一个存活探针使用例子:
apiVersion: v1
kind: Pod
metadata:
name: kubia-liveness
namespace: probe-test
spec:
containers:
- image: luksa/kubia-unhealthy
imagePullPolicy: IfNotPresent
name: kubia
livenessProbe:
httpGet:
path: /
port: 8080
查看探针使用情况:
- Last State:容器上次结束的状态
- Exit Code:137=128+9;9是SIGKILL的信号编号:进程被强制终止。Linux标准信号详解。
- Liveness:
- delay=0s:容器启动以后立即探测
- timeout:容器必须在1s内进行响应,否则认为失败
- period=10s:每10s进行一次探测
- #failure:连续探测3次失败,重启容器
当Exit Code:137 意味着容器被强行终止,这时候会创建一个全新的容器而不是重启原来的容器。