文章

k8s检测机制

k8s检测机制

Liveness Probe(存活探针)

Liveness Probe 用于检测 Pod 中的容器是否正在运行。如果探针失败,kubelet 会根据配置的重启策略来重启容器。这有助于确保应用程序在遇到错误时能够自动恢复。

使用场景

  • 检测应用是否因为某些错误而崩溃。
  • 确保应用在运行过程中不会卡住。

Readiness Probe(就绪探针)

Readiness Probe 用于检测 Pod 中的容器是否已经准备好接收流量。如果探针失败,Pod 会被从 Service 的端点列表中移除,从而不会接收新的流量,但容器不会被重启。

使用场景

  • 确保应用在启动过程中不会接收到流量,直到完全初始化完成。
  • 在应用需要维护或重启时,暂时将流量转移到其他副本。

Startup Probe(启动探针)

Startup Probe 用于检测 Pod 中的容器在启动过程中是否成功。如果探针失败,kubelet 会重启容器。Startup Probe 的主要目的是为了解决应用在启动过程中可能需要较长时间初始化的问题。

使用场景

  • 应用的启动时间较长,需要更长的初始化时间。
  • 避免在应用尚未完全启动时被 Liveness Probe 或 Readiness Probe 标记为失败。

注意事项

  • Startup Probe 只在容器启动时执行,一旦成功一次,就会切换到 Liveness Probe 和 Readiness Probe。
  • 如果未配置 Startup Probe,kubelet 会使用 Liveness Probe 和 Readiness Probe 来检测容器状态。

探针类型

  • HTTP GET:发送 HTTP GET 请求,根据响应状态码判断容器是否启动成功。
  • TCP Socket:尝试建立一个 TCP 连接,根据连接是否成功来判断容器是否启动成功。
  • Command:在容器内执行一个命令,根据命令的退出码来判断容器是否启动成功。

总结

  • Liveness Probe:检测容器是否存活,失败会重启容器。
  • Readiness Probe:检测容器是否就绪,失败不会重启容器,但会从 Service 的端点列表中移除。
  • Startup Probe:检测容器启动是否成功,失败会重启容器,主要用于解决启动时间较长的问题。

通过合理配置这些探针,可以确保 Kubernetes 集群中的 Pod 能够稳定、可靠地运行。

本文由作者按照 CC BY 4.0 进行授权