pod探针的三种类型及四种检测方式
在 Kubernetes 中,Pod 探针(Probe) 用于检测容器的健康状态和可用性。探针可以帮助 Kubernetes 决定何时重启容器、何时将流量路由到 Pod,以及何时将 Pod 标记为未就绪状态。探针分为三种类型,每种类型支持四种检测方式。以下是详细介绍:
1. Pod 探针的三种类型
1.1 Liveness Probe(存活探针)
- 作用:检测容器是否处于运行状态。如果探针失败,Kubernetes 会重启容器。
- 适用场景:用于检测容器是否“死锁”或进入不可恢复的状态。
1.2 Readiness Probe(就绪探针)
- 作用:检测容器是否准备好接收流量。如果探针失败,Kubernetes 会将 Pod 从 Service 的 Endpoints 中移除,停止将流量路由到该 Pod。
- 适用场景:用于检测容器是否已完成初始化或是否能够处理请求。
1.3 Startup Probe(启动探针)
- 作用:检测容器是否启动完成。如果探针失败,Kubernetes 会认为容器仍在启动中,不会触发 Liveness 或 Readiness 探针。
- 适用场景:用于检测启动时间较长的容器,避免在启动过程中被误杀。
2. 探针的四种检测方式
每种探针类型都可以通过以下四种方式之一来检测容器的状态:
2.1 Exec(执行命令)
- 原理:在容器内执行指定的命令,如果命令返回值为 0,则认为检测成功。
- 适用场景:适用于需要通过自定义脚本或命令检测容器状态的场景。
示例配置:
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 10
2.2 HTTP GET(HTTP 请求)
- 原理:向容器内指定的 HTTP 路径发送 GET 请求,如果返回状态码在 200 到 399 之间,则认为检测成功。
- 适用场景:适用于通过 HTTP 接口检测容器状态的场景。
示例配置:
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
2.3 TCP Socket(TCP 连接)
- 原理:尝试与容器内指定的 TCP 端口建立连接,如果连接成功,则认为检测成功。
- 适用场景:适用于通过 TCP 端口检测容器状态的场景。
示例配置:
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
2.4 gRPC(gRPC 健康检查)
- 原理:向容器内指定的 gRPC 服务发送健康检查请求,如果服务返回健康状态,则认为检测成功。
- 适用场景:适用于使用 gRPC 协议的容器。
示例配置:
startupProbe:
grpc:
port: 50051
initialDelaySeconds: 10
periodSeconds: 5
3. 探针的通用参数
无论使用哪种检测方式,探针都支持以下通用参数:
- initialDelaySeconds:容器启动后,探针开始检测前的延迟时间(单位:秒)。
- periodSeconds:探针检测的间隔时间(单位:秒)。
- timeoutSeconds:探针检测的超时时间(单位:秒)。
- successThreshold:探针检测连续成功的次数,达到该次数后认为检测成功。
- failureThreshold:探针检测连续失败的次数,达到该次数后认为检测失败。
4. 示例配置
以下是一个完整的 Pod 配置示例,包含三种探针类型和四种检测方式:
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-container
image: my-image
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
exec:
command:
- cat
- /tmp/ready
initialDelaySeconds: 3
periodSeconds: 5
startupProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
5. 总结
-
三种探针类型:
- Liveness Probe:检测容器是否存活。
- Readiness Probe:检测容器是否就绪。
- Startup Probe:检测容器是否启动完成。
-
四种检测方式:
- Exec:执行命令。
- HTTP GET:发送 HTTP 请求。
- TCP Socket:建立 TCP 连接。
- gRPC:发送 gRPC 健康检查请求。
通过合理配置探针,可以确保 Kubernetes 集群中的容器始终保持健康状态,并能够正确处理流量。根据实际需求选择合适的探针类型和检测方式,可以有效提升应用的稳定性和可靠性!
本文来自博客园,作者:dashery,转载请注明原文链接:https://www.cnblogs.com/ydswin/p/18042185
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略