为什么我在 kubernetes 中需要 3 种不同类型的探针:
有一些问题(k8s - livenessProbe 与 readinessProbe,设置就绪、活跃或启动探测器)和关于这个主题的文章。但这不是很清楚:
Mat*_*s M 16
这 3 种探针有 3 种不同的用例。这就是为什么我们需要 3 种探针。
活性探针
如果Liveness Probe失败,pod 将重新启动(阅读有关 failureThreshold 的更多信息)。
用例:如果 pod 已死,则重新启动 pod。
最佳实践:仅在活性探测中包含基本检查。永远不要检查与其他服务(例如数据库)的连接。检查不应花费太长时间才能完成。如果 pod真的死了,请始终指定一个light Liveness Probe以确保 pod 将重新启动。
启动探针
Startup Probes检查 pod 在启动后何时可用。
用例:一旦 Pod 在启动后可用,就将流量发送到 Pod。启动探测器可能需要更长的时间才能完成,因为它们仅在初始化时调用。他们可能会调用预热任务(但也可以考虑使用 init 容器进行初始化)。
最佳实践:如果 pod 需要很长时间才能启动,请指定Startup Probe。Startup 和 Liveness Probe 可以使用相同的端点,但Startup Probe 的故障阈值将不那么严格,以防止启动失败(s. Kubernetes in Action)。
准备探针
与Startup Probes Readiness Probes检查相比,Pod 在整个生命周期中是否可用。与Liveness Probes相比,只有到 pod 的流量才会停止,如果Readiness 探针失败,但不会重启。
用例:停止向 Pod 发送流量,如果 Pod 由于与另一个服务(例如数据库)的连接失败而暂时无法提供服务,并且 Pod 将在稍后恢复。
最佳实践:包括所有必要的检查,包括与其他服务的连接。尽管如此,检查不应花费太长时间才能完成。如果 Pod 可以正确处理传入的请求,请始终指定Readiness Probe以确保 Pod 仅获取流量。
文档
Mos*_*ael 12
livenessProbe、readinessProbe、startupProbe的区别
\n活性探针:
\n livenessProbe:\n httpGet:\n path: /healthz\n port: 8080\n initialDelaySeconds: 3\n periodSeconds: 3\nRun Code Online (Sandbox Code Playgroud)\n准备情况探针:
\n readinessProbe:\n httpGet:\n path: /healthz\n port: 8080\n initialDelaySeconds: 3\n periodSeconds: 3\nRun Code Online (Sandbox Code Playgroud)\n启动探针:
\n startupProbe:\n httpGet:\n path: /healthz\n port: 8080\n initialDelaySeconds: 3\n periodSeconds: 3\nRun Code Online (Sandbox Code Playgroud)\n查看K8S文档了解更多信息。
\nAda*_*hes 11
这是我们在应用程序中使用的一个具体示例。它有一个简单的 HTTP 运行状况检查,可在http://hostname:8080/management/health.
ports:
- containerPort: 8080
name: web-traffic
Run Code Online (Sandbox Code Playgroud)
startupProbe:
successThreshold: 1
failureThreshold: 18
periodSeconds: 10
timeoutSeconds: 5
httpGet:
path: /management/health
port: web-traffic
Run Code Online (Sandbox Code Playgroud)
readinessProbe:
successThreshold: 2
failureThreshold: 2
periodSeconds: 10
timeoutSeconds: 5
httpGet:
path: /management/health
port: web-traffic
Run Code Online (Sandbox Code Playgroud)
livenessProbe:
successThreshold: 1
failureThreshold: 3
periodSeconds: 30
timeoutSeconds: 5
httpGet:
path: /management/health
port: web-traffic
Run Code Online (Sandbox Code Playgroud)
我认为下表描述了每个的用例。
Feature |
Readiness Probe |
Liveness Probe |
Startup Probe |
|---|---|---|---|
| 考察 | 指示容器是否准备好服务请求。 | 指示容器是否正在运行。 | 指示容器内的应用程序是否启动。 |
| 论失败 | 如果就绪探测失败,端点控制器会从与该 Pod 匹配的所有服务的端点中删除该 Pod 的 IP 地址。 | 如果活性探测失败,kubelet 将终止容器,并且容器将遵循其重新启动策略。 | 如果启动探测失败,kubelet 将终止容器,并且容器将遵循其重新启动策略。 |
| 默认情况 | 初始延迟之前的默认就绪状态是“失败”。如果容器不提供就绪探针,则默认状态为成功。 | 如果容器不提供活性探测,则默认状态为成功。 | 如果容器不提供启动探测,则默认状态为成功。 |
资料来源:
| 归档时间: |
|
| 查看次数: |
1161 次 |
| 最近记录: |