在 Kubernetes 中,探针(probes)是一种机制,用于检查容器是否处于正常状态以及容器是否可以接收流量。 Kubernetes 提供了三种类型的探针:存活探针(Liveness Probe)、就绪探针(Readiness Probe)和启动探针(Startup Probe)。

以下是这三种探针的作用和用法:

  1. 存活探针(Liveness Probe) 作用:检查容器中的进程是否仍在运行。如果进程崩溃或停止响应,Kubernetes 将重启容器。

用法:建议在容器的生命周期中始终使用存活探针,以确保容器的可靠性。例如,可以配置一个存活探针来检查容器中的进程是否响应 HTTP 请求或 ping 命令。

示例 YAML 配置:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

该配置文件指示 Kubernetes 发送一个 HTTP GET 请求到容器的 /healthz 路径,并在容器启动后的 5 秒后开始检查容器的运行状况。检查频率为每隔 10 秒发送一次。

  1. 就绪探针(Readiness Probe) 作用:检查容器是否准备好接收流量。如果容器尚未准备好接收流量,则 Kubernetes 将不会将流量发送到容器。

用法:建议在容器需要一些额外的时间来启动的情况下使用就绪探针。例如,可以配置一个就绪探针来检查容器是否存在必需的文件或数据库连接。

示例 YAML 配置:

readinessProbe:
  tcpSocket:
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

该配置文件指示 Kubernetes 检查容器是否可以在 8080 端口接收 TCP 连接,并在容器启动后的 5 秒后开始检查容器的运行状况。检查频率为每隔 10 秒发送一次。

  1. 启动探针(Startup Probe) 作用:检查容器内部应用程序是否已经启动,成功后会运行存活和就绪探针。与存活探针和就绪探针不同,它们在容器启动时运行,并在容器启动完成后禁用。

用法:建议在容器启动时需要启动较长时间的应用程序时使用启动探针。例如,可以配置一个启动探针来检查容器中的某个进程或 Web 服务器是否已经启动。

示例 YAML 配置:

startupProbe:
  httpGet:
    path: /healthz
    port: 8080
  failureThreshold: 30
  periodSeconds: 10
  successThreshold: 1

该配置文件指示 Kubernetes 在容器启动时每隔 10 秒发送一个 HTTP GET 请求到容器的 /healthz 路径,直到成功或重试 30 次。成功1次就算成功。如果探针连续重试 30 次都没有成功,Kubernetes 将停止容器。