Google Kubernetes Engine Ingress不健康的后端服务 [英] Google Kubernetes Engine Ingress UNHEALTHY backend service
问题描述
亲切的注意::我在Google上搜索了很多东西,并且在StackOverflow上也看到了很多与此问题相关的问题,但无法解决我的问题,这就是为什么不要将其标记为重复项,请!
Kind Note: I have googled a lot and take a look too many questions related to this issue at StackOverflow also but couldn't solve my issue, that's why don't mark this as duplicate, please!
我正在尝试在Google Kubernetes Engine上部署2个服务(一个是Python flask,另一个是NodeJS).我为每个服务创建了两个Kubernetes部署,为NodePort
类型的每个服务创建了两个Kubernetes服务.然后,我创建了一个Ingress并提到了endpoints
,但是Ingress表示一个后端服务是UNHEALTHY
.
I'm trying to deploy 2 services (One is Python flask and other is NodeJS) on Google Kubernetes Engine. I have created two Kubernetes-deployments one for each service and two Kubernetes-services one for each service of type NodePort
. Then, I have created an Ingress and mentioned my endpoints
but Ingress says that One backend service is UNHEALTHY
.
以下是我的部署" YAML定义:
Here are my Deployments YAML definitions:
# Pyservice deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: pyservice
labels:
app: pyservice
namespace: default
spec:
selector:
matchLabels:
app: pyservice
template:
metadata:
labels:
app: pyservice
spec:
containers:
- name: pyservice
image: docker.io/arycloud/docker_web_app:pyservice
ports:
- containerPort: 5000
imagePullSecrets:
- name: docksecret
# # Nodeservice deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nodeservice
labels:
app: nodeservice
namespace: default
spec:
selector:
matchLabels:
app: nodeservice
template:
metadata:
labels:
app: nodeservice
tier: web
spec:
containers:
- name: nodeservice
image: docker.io/arycloud/docker_web_app:nodeservice
ports:
- containerPort: 8080
imagePullSecrets:
- name: docksecret
而且,这是我的服务和Ingress YAML定义:
And, here are my services and Ingress YAML definitions:
# pyservcie service
kind: Service
apiVersion: v1
metadata:
name: pyservice
spec:
type: NodePort
selector:
app: pyservice
ports:
- protocol: TCP
port: 5000
nodePort: 30001
---
# nodeservcie service
kind: Service
apiVersion: v1
metadata:
name: nodeservcie
spec:
type: NodePort
selector:
app: nodeservcie
ports:
- protocol: TCP
port: 8080
nodePort: 30002
---
# Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: "gce"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: pyservice
servicePort: 5000
- path: /*
backend:
serviceName: pyservice
servicePort: 5000
- path: /node/svc/
backend:
serviceName: nodeservcie
servicePort: 8080
pyservice
工作正常,但nodeservice
显示为UNHEALTHY
后端.这是屏幕截图:
The pyservice
is working fine but the nodeservice
shows as UNHEALTHY
backend. Here's a screenshot:
即使我已经为所有gke-....
编辑了Firewall Rules
,并允许所有端口仅用于摆脱此问题,但它仍显示nodeservice
的UNHEALTHY
状态.
Even I have edited the Firewall Rules
for all gke-....
and allow all ports just for getting out from this issue, but it still showing the UNHEALTHY
status for nodeservice
.
这是怎么了?
提前谢谢!
推荐答案
为什么要使用GCE入口类,然后指定nginx重写注释?如果您尚未意识到,则注释不会对GCE入口产生任何作用.
Why are you using a GCE ingress class and then specifying a nginx rewrite annotation? In case you haven't realised, the annotation won't do anything to the GCE ingress.
您还拥有"nodeservcie"作为选择器,而不是"nodeservice".
You have also got 'nodeservcie' as your selector instead of 'nodeservice'.
这篇关于Google Kubernetes Engine Ingress不健康的后端服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!