我遵循了负载均衡器教程:https : //cloud.google.com/container- engine/docs/tutorials/http-balancer在使用Nginx映像时,当尝试使用自己的应用程序映像时,它工作正常后端切换为不正常。
我的应用程序重定向到/(返回302),但livenessProbe在pod定义中添加了一个:
livenessProbe
livenessProbe: httpGet: path: /ping port: 4001 httpHeaders: - name: X-health-check value: kubernetes-healthcheck - name: X-Forwarded-Proto value: https - name: Host value: foo.bar.com
我的入口看起来像:
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: foo spec: backend: serviceName: foo servicePort: 80 rules: - host: foo.bar.com
服务配置为:
kind: Service apiVersion: v1 metadata: name: foo spec: type: NodePort selector: app: foo ports: - port: 80 targetPort: 4001
后端健康状况ingress describe ing如下:
ingress describe ing
backends: {"k8s-be-32180--5117658971cfc555":"UNHEALTHY"}
入口的规则如下:
Rules: Host Path Backends ---- ---- -------- * * foo:80 (10.0.0.7:4001,10.0.1.6:4001)
任何指针都收到了很大的帮助,我一直在努力解决这个问题,但运气不佳。
更新资料
我已将readinessProbe部署添加到我的部署中,但似乎仍然无法正常运行/,并且入口仍不健康。我的探针看起来像:
readinessProbe
readinessProbe: httpGet: path: /ping port: 4001 httpHeaders: - name: X-health-check value: kubernetes-healthcheck - name: X-Forwarded-Proto value: https - name: Host value: foo.com
我将服务更改为:
kind: Service apiVersion: v1 metadata: name: foo spec: type: NodePort selector: app: foo ports: - port: 4001 targetPort: 4001
更新2
从中删除自定义标头后,readinessProbe它开始工作!非常感谢。
您需要添加一个readinessProbe(只需复制您的livenessProbe)。
GCE L7 Ingress Docs中对此进行了解释。
健康检查 当前,所有服务后端必须满足以下任一要求,才能通过GCE负载平衡器发送给它的HTTP运行状况检查:1.在“ /”上响应200。内容没关系。2.在支持服务的窗格上公开一个任意URL,作为准备情况调查。
健康检查
当前,所有服务后端必须满足以下任一要求,才能通过GCE负载平衡器发送给它的HTTP运行状况检查:1.在“ /”上响应200。内容没关系。2.在支持服务的窗格上公开一个任意URL,作为准备情况调查。
还要确保readinessProbe指向您公开给Ingress的端口。在您的情况下,这很好,因为您只有一个端口,如果添加另一个端口,则可能会遇到麻烦。