就绪探针、存活探针和启动探针的区别和用途
在 Kubernetes 中,探针(Probe)用于检查容器的健康状态和可用性。主要有三种类型:就绪探针(Readiness Probe)、存活探针(Liveness Probe)和启动探针(Startup Probe)。每种探针都有不同的用途:
1. 就绪探针(Readiness Probe)
用途:
- 确定容器是否已准备好接受流量。
- 如果就绪探针失败,Pod 会从服务的端点中移除,直到探针成功为止。
使用场景:
- 应用需要一段时间加载数据或初始化。
- 确保在应用完全准备好之前,不会接收请求。
2. 存活探针(Liveness Probe)
用途:
- 检查容器是否在正常运行。
- 如果存活探针失败,Kubernetes 将重启该容器。
使用场景:
- 检测应用是否进入死循环或死锁状态。
- 确保应用在运行过程中保持健康。
3. 启动探针(Startup Probe)
用途:
- 专门用于检测容器启动时的健康状况。
- 在启动探针成功之前,不会执行其他探针(如存活探针和就绪探针)。
使用场景:
- 应用启动时间较长,可能超过存活探针的超时时间。
- 用于替代存活探针在启动阶段的检查,以避免不必要的重启。
配置示例
下面是一个配置示例,展示如何设置这三种探针:
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: example-container
image: example-image
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
startupProbe:
httpGet:
path: /start
port: 8080
initialDelaySeconds: 0
periodSeconds: 5
failureThreshold: 30
总结
- 就绪探针:确保容器已准备好接收请求。
- 存活探针:确保容器在运行过程中保持健康。
- 启动探针:确保容器在启动阶段的健康,适用于启动时间较长的应用。