2

嗨,我尝试使用 GCP LoadBalancer 的自定义运行状况检查。

我添加了readinessProbe&livenessProbe像这样:

    readinessProbe:
      httpGet:
        path: /health
        port: dash
      initialDelaySeconds: 5
      periodSeconds: 1
      timeoutSeconds: 1
      successThreshold: 1
      failureThreshold: 10
    livenessProbe:
      httpGet:
        path: /health
        port: dash
      initialDelaySeconds: 5
      periodSeconds: 1
      timeoutSeconds: 1
      successThreshold: 1
      failureThreshold: 10

但是当我创建我的入口时,我没有得到我的自定义健康检查

路径 LB

4

2 回答 2

5

最终确定了答案。我试图做的事情是不可能的。我的 GCE Ingress 在 port 上使用了后端80。但在我的 ReadinessProbe 中,我告诉他检查端口8080/health路径。这是不可能的!

Ingress 后端声明的服务端口必须与readinessProbe. 只有路径可以不同。如果我们不遵守此模式,则它/与运行状况检查 GCP 路径相关联。

从网络的角度来看这是合乎逻辑的,Health Check GCP 在 Kube 集群之外,如果我们告诉它在端口上路由,80但我们ReadinessProbe在另一个端口上,它如何确保即使与ReadinessProbe 遇到端口80(它必须在其上路由流量)也会响应。

总之,Ingress中声明的后端端口必须readinessProbe在同一个端口上。我们唯一可以自定义的是路径。

于 2019-04-09T07:14:33.273 回答
1

我认为您对 GCP 中的资源感到困惑。

您发布的代码与负载均衡器资源无关,因为它是对 pod 状态的 kubernetes 健康检查。如果您想知道探针是否在工作,请检查您的 pod 状态,如果它没有运行,请描述您的 pod 并查看日志,应该表明探针存在问题。

我猜你在你的 kubernetes conf 中的某个地方有一个入口资源,它创建了 lb 和它周围的所有资源,比如健康检查(仍然猜测你发布的图像与此有关)。

如果您使用 GKE,您应该保留您部署的 k8s 配置中的 google 自动资源配置,因为您可能会破坏 google 已经为您维护的一些东西。

于 2019-04-08T09:42:49.073 回答