Google Kubernetes Engine Ingress不健康的后端服务 [英] Google Kubernetes Engine Ingress UNHEALTHY backend service

查看:112
本文介绍了Google Kubernetes Engine Ingress不健康的后端服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲切的注意::我在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,并允许所有端口仅用于摆脱此问题,但它仍显示nodeserviceUNHEALTHY状态.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆