在Kubernetes中,livenessProbe
和 readinessProbe
是两种健康检查机制,它们可以帮助系统了解容器的状态,并据此采取相应的行动。这两种探针对于确保应用的高可用性和服务的正常运行至关重要。
Liveness Probe(存活探针):
- 作用: Liveness probe 用于判断容器是否正在运行。如果 liveness probe 检测失败,则 Kubernetes 会认为该容器已经死锁或处于不健康状态,并自动重启它。
- 使用场景: 当应用程序代码出现错误或者陷入无限循环等导致无法处理请求时,存活探针可以检测到这种异常情况并重启容器,从而恢复服务。
- 配置示例:
在这个例子中,存活探针会在容器启动后等待30秒(livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 30 periodSeconds: 10
initialDelaySeconds
),然后每隔10秒(periodSeconds
)尝试访问容器内的/healthz
端点来检查其健康状况。
Readiness Probe(就绪探针):
- 作用: Readiness probe 用于判断容器是否准备好接受流量。只有当 readiness probe 成功时,Kubernetes 才会将网络流量发送给该 Pod。这有助于避免在应用还未完全准备好的时候就开始接收请求,保证了服务质量。
- 使用场景: 如果一个应用程序需要一段时间进行初始化(如加载缓存、建立数据库连接等),在此期间它可能还不适合处理用户请求。通过设置就绪探针,可以确保在这段时间内不会向应用发送任何请求。
- 配置示例:
这里定义了一个就绪探针,它会在容器启动后等待5秒(readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 5
initialDelaySeconds
),之后每5秒(periodSeconds
)执行一次 HTTP GET 请求到/ready
端点,以确认应用是否已准备好接受流量。
总结:
- Liveness Probe 主要关注的是容器是否仍然活着并且没有挂掉;如果探测失败,Kubernetes 将重新启动容器。
- Readiness Probe 则更关心容器是否已经准备好处理客户端请求;如果探测失败,Kubernetes 不会将流量路由到这个 Pod 上。
合理地配置这两个探针能够帮助你构建更加健壮和可靠的服务。