目录
- 一、LivenessProbe(存活探针)
- 二、ReadinessProbe(就绪探针)
- 三、其他探针选项
Kubernetes 提供了一套强大的健康检查机制,以确保 Pod 内的应用程序能够稳定运行。这种机制是通过被称为“探针”(Probes)的功能来实现的,主要包括两种类型的探针:LivenessProbe(存活探针)和 ReadinessProbe(就绪探针)。
一、LivenessProbe(存活探针)
存活探针用于检测容器内的应用程序是否处于正常运行状态。如果探测失败,Kubernetes 认为该应用程序不再健康,kubelet 会根据 Pod 的重启策略(restartPolicy
)采取相应措施,通常会重启该容器。这有助于自动恢复因软件错误、死锁或其他问题导致的故障。
spec:
containers:
- name: myapp-container
image: myapp:v1
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15
periodSeconds: 5
这段配置定义了一个 HTTP GET 类型的存活探针,它在容器启动后 15 秒开始执行第一次检查,之后每 5 秒检查一次,通过访问容器内的 /healthz
端点来判断容器是否健康。
二、ReadinessProbe(就绪探针)
就绪探针用于判断容器是否准备好接收外部请求。如果探测成功,表示容器已准备就绪,Kubernetes 服务(Service)会开始将流量导向该容器;如果失败,则流量会被路由至其他健康且已就绪的容器。这有助于实现服务的平滑升级和滚动更新,确保用户体验不受影响。
spec:
containers:
- name: myapp-container
image: myapp:v1
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 60
在此配置中,使用了 TCP Socket 类型的就绪探针,它在容器启动后 5 秒开始执行第一次检查,之后每 60 秒检查一次,通过连接容器的 8080 端口来判断容器是否准备好服务请求。
三、其他探针选项
- Exec探针:直接在容器内执行一个命令,根据命令的退出状态码判断探针的成功与否。
- TimeoutSeconds:定义每个探针执行的超时时间。
- SuccessThreshold:连续探测成功的最小次数,只有达到此次数,才认为探针状态转为成功。
- FailureThreshold:连续探测失败的最大次数,达到此次数后,探针被视为失败。