kubernetes - 为什么 active 和就绪性都需要

标签 kubernetes kubernetes-health-check

在对 kubernetes pod 进行健康检查时,即使我们已经维护了就绪探针,为什么还需要 active 探针?

Readiness 探针已经持续检查 Pod 内的应用程序是否准备好处理请求,这意味着 Pod 处于事件状态。但是,为什么需要 active 探针?

最佳答案

探针具有不同的含义和不同的结果:

  • 事件探针失败 -> 重新启动容器
  • 就绪探测失败 -> 不向该 Pod 发送流量

您无法根据就绪情况确定活跃度,反之亦然。仅仅因为 Pod 无法接受流量,并不意味着需要重新启动,这可能意味着它只需要时间来完成一些工作。

如果您正在部署例如php 应用程序,这两个可能是相同的,但 k8s 是一个通用系统,支持多种类型的工作负载。

<小时/>

来自:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/

The kubelet uses liveness probes to know when to restart a Container. For example, liveness probes could catch a deadlock, where an application is running, but unable to make progress. Restarting a Container in such a state can help to make the application more available despite bugs.

The kubelet uses readiness probes to know when a Container is ready to start accepting traffic. A Pod is considered ready when all of its Containers are ready. One use of this signal is to control which Pods are used as backends for Services. When a Pod is not ready, it is removed from Service load balancers.

<小时/>

旁注:实际上,准备度应该是活跃度的子集,这意味着准备度意味着活跃度(活跃度失败意味着准备度失败)。但这并不会改变上面的解释,因为如果您只有准备状态,则只能暗示何时不需要重新启动,这与根本没有任何重新启动的探针相同。另外,由于探针是单独定义的,因此无法保证 k8s 中的一个是另一个的子集

关于kubernetes - 为什么 active 和就绪性都需要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744943/

相关文章:

kubernetes - 带 Helm 图的默认命名空间中的大三角帆创建应用程序

kubernetes - 如何为将HTTP重定向到https的容器正确配置ReadinessProbeProbe?

http - 降级健康检查的 HTTP 状态码应该是什么?

grpc-java - grpc-health-probe(Kubernetes 上的 gRPC 健康检查)如何区分 liveness 和 readiness 探针

kubernetes - Kubectl 命令从 Kubernetes 返回所有用户帐户的列表

kubernetes - 完成kubernetes作业会对API服务器造成多少压力?

elasticsearch - 如何在外部使用eck公开Elasticsearch设置

docker - 在Google Cloud Platform中更新Docker镜像

kubernetes - 如何将我们的自定义Thingsboard部署到Kubernetes Engine?

docker - 如何启动(重启)kubernetes apiservice并添加用户名密码认证