1

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

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

4

1 回答 1

3

你有错字..你说:

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

但是,它应该是:

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

在此处输入图像描述

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

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

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

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

所以让我们总结一下:

要获得完整的 HA 部署,您需要三件事:

  • Pod 由Deployment管理,Deployment将维护许多副本。
  • Liveness Probe将有助于删除/重新启动不健康的 pod。在某些时间(6 次重新启动)之后,Pod 将变得不健康,部署将注意带来新的。
  • Readiness Probe将帮助仅将流量转发到就绪的 Pod:无论是在运行开始时,还是在运行结束时(正常关闭)。
于 2020-07-10T19:56:46.040 回答