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

时间:2019-04-08 09:33:14

标签: kubernetes google-cloud-platform google-health

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

我已经这样添加了readinessProbelivenessProbe

    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

2 个答案:

答案 0 :(得分:1)

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

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

我将猜测您的kubernetes配置文件中的某个地方有一个入口资源,它会像运行状况检查一样创建lb及其周围的所有资源(仍然猜测您发布的图像与此相关)。

如果您使用的是GKE,则应按原样保留已部署的k8s配置中的google自动化资源配置,因为这可能会破坏google已经为您维护的某些功能。

答案 1 :(得分:1)

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

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

从网络的角度来看,这是合乎逻辑的,如果我们告诉KCP集群在端口80上路由,但我们的ReadinessProbe在另一个端口上,则运行状况检查GCP不在Kube群集中,如何确保即使与ReadinessProbe关联的端口遇到端口80(必须在其上路由流量的端口)也做出响应。

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