在Kubernetes中,有三种类型的探针(Probes)用于检查容器的健康状况和确定是否应该将请求路由到容器。这些探针可以配置在 Pod 的规范中。
存活探针(Liveness Probe)
livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 15 periodSeconds: 10
上述示例配置了一个 HTTP GET 请求的存活探针。它将在容器启动后等待 15 秒后开始执行,并且每 10 秒执行一次。探针会发送一个 HTTP GET 请求到容器的 /health
路径,并使用端口号 8080
就绪探针(Readiness Probe)
存活探针用于确定容器是否处于运行状态。如果存活探针失败(返回失败状态码或超时),Kubernetes会认为容器不健康,并会重启容器。这可以用于检测应用程序内部错误或死锁情况。
readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 3
上述示例配置了一个 HTTP GET 请求的就绪探针。它将在容器启动后等待 5 秒后开始执行,并且每 3 秒执行一次。探针会发送一个 HTTP GET 请求到容器的 /ready
路径,并使用端口号 8080。
启动探针(Startup Probe)
启动探针用于确定容器是否已经启动并且准备好接受流量。与存活探针和就绪探针不同,启动探针在容器的初始启动阶段使用,并且仅会运行一次。启动探针成功后,就绪探针和存活探针才会启动。
startupProbe: exec: command: - cat - /tmp/initialized initialDelaySeconds: 10 periodSeconds: 5 failureThreshold: 30
上述示例配置了一个执行命令的启动探针。它将在容器启动后等待 10秒 后开始执行,并且每 5 秒执行一次。探针会执行命令 cat /tmp/initialized
,如果命令成功执行,表示容器已经初始化完成