【问题标题】:Kubernetes: Readiness Check with httpGetKubernetes:使用 httpGet 进行就绪检查
【发布时间】:2020-10-31 14:13:25
【问题描述】:

我对准备探测感到很困惑。假设我使用带有 /health 的 httpGet 作为探测端点。一旦就绪检查返回 500,服务器将停止服务流量。那么 /health 端点如何工作?换句话说,一旦就绪检查失败,它怎么能再次工作,因为它不能再回答未来的 /health 检查?

我想一个有效的解释是路径是在本地调用的? (即不通过 h​​ttps:${ip and port}/health)

【问题讨论】:

  • 你应该在 livenessProbe 中使用 /health 端点,这样 kubernetes 会杀死并启动另一个 pod。为了做好准备,您可以使用与您的业务逻辑相关的另一个端点。
  • 这应该回答你的问题:stackoverflow.com/a/46029885/10020419

标签: kubernetes yaml readinessprobe


【解决方案1】:

你有错字..你说:

一旦就绪检查返回 500,服务器将停止提供流量。

但是,应该是:

一旦就绪检查返回 500,k8s 服务将停止提供流量。

k8s 服务的行为类似于多 pod 的负载均衡器。

  • 如果 Pod 准备就绪,将为准备好的 Pod 创建一个端点,并接收流量。
  • 如果 pod 没有准备好,它的端点会被移除,不会再接收流量。

Readiness Probe 决定是否转发流量,Liveness Probe 决定是否重启 Pod。

如果你想摆脱不健康的 Pod,你还必须指定 Liveness Probe

让我们总结一下:

要获得完整的 HA 部署,您需要同时满足 3 件事:

  • Pod 由 Deployment 管理,它将维护许多副本。
  • Liveness Probe 将有助于删除/重新启动不健康的 Pod。一段时间后(6 次重新启动),Pod 将变得不健康,Deployment 会注意引入新的。
  • Readiness Probe 将帮助仅将流量转发到准备好的 pod:在运行开始时或在运行结束时(正常关闭)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 2021-08-14
    • 1970-01-01
    • 2021-01-21
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多