我遵循了负载均衡器教程:https : //cloud.google.com/container-engine/docs/tutorials/http-balancer在使用Nginx映像,尝试使用自己的应用程序映像时可以正常工作后端切换为不正常。
我的应用程序重定向到/(返回302),但我livenessProbe
在pod定义中添加了一个:
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
如下:
backends: {"k8s-be-32180--5117658971cfc555":"UNHEALTHY"}
入口的规则如下所示:
Rules:
Host Path Backends
---- ---- --------
* * foo:80 (10.0.0.7:4001,10.0.1.6:4001)
任何指针都收到了很大的帮助,我已经尝试了好几个小时而没有运气。
更新
我已将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,作为准备情况调查。
还要确保readinessProbe指向您暴露给Ingress的端口。在您的情况下,这很好,因为您只有一个端口,如果添加另一个端口,则可能会遇到麻烦。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句