使用 GCP 进行自定义健康检查

Custom Health check with GCP

您好,我尝试使用 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

但是当我创建入口时,我还没有进行自定义健康检查

Path LB

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

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

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

如果您使用的是 GKE,您应该保留原样部署的 k8s 配置中的 google 自动资源配置,因为您可能会中断 google 已经为您维护的某些内容。

已完成一个答案。我想做的事是不可能的。我的 GCE Ingress 在端口 80 上使用了后端。但是在我的 ReadinessProbe 中,我告诉他检查端口 8080/health 路径。 这不可能!

Ingress后端声明的服务端口必须与readinessProbe中声明的相同。 只有路径可以不同。如果我们不遵守这种模式,那么与 Health Check GCP 路径关联的是 /

从网络的角度来看,这是合乎逻辑的,健康检查 GCP 是 Kube 集群的 "out",如果我们告诉它在端口 80 上路由,但我们的 ReadinessProbe在另一个端口上,它如何确保即使与 ReadinessProbe 关联的端口满足端口 80(这是它必须在其上路由流量的端口)也响应。

综上所述,在Ingress中声明的backend的端口一定要有一个readinessProbe在同一个端口上。我们唯一可以自定义的就是路径。