在 Kubernetes (k8s) 中,Pod 的 LivenessProbe 探针常见的方式有以下三种:
-
Exec:
-
通过在容器内部执行一个命令来检查应用是否正常运行。如果命令的退出状态码为0,则认为应用程序是健康的;非0状态码则视为不健康。例如:
livenessProbe: exec: command: - cat - /tmp/healthy
在这个例子中,Kubernetes 将会在指定的时间间隔内执行
cat /tmp/healthy
命令,如果该文件存在且能成功读取(即命令返回0),则认为容器是健康的。
-
-
HTTPGet:
-
向容器暴露的一个HTTP端点发送GET请求,根据响应的状态码判断容器的健康状况。例如:
livenessProbe: httpGet: path: /healthz port: 8080 httpHeaders: - name: Custom-Header value: AwesomeValue
此探针会定期访问容器在8080端口上的
/healthz
路径,并期望收到成功的HTTP状态码(通常为200)。
-
-
TCPSocket:
-
直接尝试连接到容器监听的特定TCP端口,如果能够建立连接,则表明容器服务处于活动状态。例如:
livenessProbe: tcpSocket: port: 9000
这个探针将试图连接到容器的9000端口,如果能够成功建立连接,则认为容器是健康的。
-
综上所述,除了以上 probe 类型外,LivenessProbe 还可以配置超时时间 (timeoutSeconds
)、检查间隔 (periodSeconds
) 和连续失败次数阈值 (failureThreshold
) 等参数,以便更精细地控制探测行为。当 LivenessProbe 失败超过设定的阈值时,Kubernetes 会重启相应的容器。