Google Kubernetes入口健康检查总是失败
我已经在端口80上配置了一个通过apache公开的web应用程序pod。我无法配置从internet访问的服务+入口。问题是后端服务总是报告为不健康 吊舱配置:Google Kubernetes入口健康检查总是失败,kubernetes,google-cloud-platform,google-kubernetes-engine,kubernetes-ingress,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,Kubernetes Ingress,我已经在端口80上配置了一个通过apache公开的web应用程序pod。我无法配置从internet访问的服务+入口。问题是后端服务总是报告为不健康 吊舱配置: apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: name: webapp name: webapp namespace: my-app spec: replicas: 1 selector: matchLabels:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
name: webapp
name: webapp
namespace: my-app
spec:
replicas: 1
selector:
matchLabels:
name: webapp
template:
metadata:
labels:
name: webapp
spec:
containers:
- image: asia.gcr.io/my-app/my-app:latest
name: webapp
ports:
- containerPort: 80
name: http-server
服务配置:
apiVersion: v1
kind: Service
metadata:
name: webapp-service
spec:
type: NodePort
selector:
name: webapp
ports:
- protocol: TCP
port: 50000
targetPort: 80
入口配置:
kind: Ingress
metadata:
name: webapp-ingress
spec:
backend:
serviceName: webapp-service
servicePort: 50000
这导致后端服务报告不健康
运行状况检查设置:
Path: /
Protocol: HTTP
Port: 32463
Proxy protocol: NONE
附加信息:我尝试了一种不同的方法,将部署公开为带有外部IP的负载平衡器,效果非常好。尝试使用NodePort+入口时,此问题仍然存在。对于GKE,在创建入口时会自动创建负载平衡器上的运行状况检查。由于HC是自动创建的,所以防火墙规则也是自动创建的 由于未配置readinessProbe,因此LB创建了一个默认HC(您列出的那个)。为了正确地调试,您需要隔离故障点所在的位置 首先,确保你的吊舱正常服务于交通
kubectl exec[pod_name]--wget localhost:80
如果应用程序内置了curl
,则可以使用它而不是wget
。
如果应用程序既没有wget也没有curl,请跳到下一步
kubectl获得svc webapp服务
sudotoolboxbash
最后,如果pod和服务都正常工作,那么负载平衡器的健康检查就有问题,谷歌也需要调查这个问题。这是什么样的健康检查?防火墙是否允许通信到此端口?@suren-运行状况检查由负载平衡器在创建入口时配置。防火墙规则也与此一起创建,允许访问。这很奇怪。你等了多久了?通常需要3-4分钟才能显示一个健康的后端。你检查过防火墙规则吗?端口32463是否打开?32463应该是服务的节点端口,应该为健康检查IP的整个节点端口范围自动创建防火墙规则,这不应该是防火墙问题。您是否可以帮助解决此类奇怪情况?可能进行屏幕共享吗?我了解到,当存在入口时,准备就绪探测器工作不正常。对我来说,它在重新部署入口时也不起作用。其他一些人报告说,需要删除健康检查,因为即使在修改后,它们也做了错误的事情。我最终让/和/健康Z返回了200,并且它起作用了。我认为这是可以解决的。。