如果我运行http load balancer example它在我的谷歌容器引擎项目中正常工作 . 当我运行"kubectl describe ing"时,后端是"HEALTHY" . 如果我然后将svc更改为指向我的应用程序的svc,如下所示:
apiVersion: v1
kind: Service
metadata:
name: app
labels:
name: app
spec:
ports:
- port: 8000
name: http
targetPort: 8000
selector:
name: app
type: NodePort
我正在运行的应用程序是在gunicorn背后的django,并且工作只是发现我是否使用负载 balancer 器而不是NodePort .
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: main-ingress
spec:
backend:
serviceName: app
servicePort: 8000
现在,当我运行“kubectl describe ing”时,后端被列为“不 Health ”,并且对入口IP的所有请求都给出了502 .
-
502是不良 Health 检查的症状吗?
-
如何通过 Health 检查?我'm pretty sure the container running my app is actually healthy. I never set up a health check so I'假设我必须配置一些未配置的东西,但我的谷歌搜索并没有让我到处都是 .
2 回答
经过大量挖掘后,我找到了答案:根据此处的要求:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/cluster-loadbalancing/glbc#prerequisites应用程序必须在'/'返回200状态代码 . 因为我的应用程序返回302(重定向到登录),所以运行状况检查失败 . 当 Health 检查失败时,入口资源返回502 .
在我们的例子中,外部端口和内部端口在values.yaml中被称为5000,但是服务正在侦听3000端口(在看到pod日志之后才知道),因此显示了502坏网关 .
一旦我将外部端口和内部端口更新为3000并升级了该特定服务的部署,就能够看到所需的输出 .