Ingress 无法在 Kubernetes v1.21.5 中找到后端服务

Ingress unable to find backend service in Kubernetes v1.21.5

我在 docker 上使用 Kubernetes v1.21.5。以下是我的入口 YAML 文件

kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: triver.dev  
      http:
        paths:
          - path: /service/account/?(.*)
            pathType: Prefix
            backend:
              service:
                name: auth-srv
                port:
                  number: 3000

我是运行一个auth srv镜像,下面是它的YAML文件

kind: Deployment
metadata:
  name: auth-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
    spec:
      containers:
        - name: auth
          image: triver/auth
          env:
            - name: MONGO_URI
              value: 'mongodb://mongo-srv:27017/auth'
            - name: JWT_KEY
              valueFrom:
                secretKeyRef:
                  name: jwt-secret
                  key: JWT_KEY
---
apiVersion: v1
kind: Service
metadata:
  name: auth-srv
spec:
  selector:
    app: auth
  ports:
    - name: auth
      protocol: TCP
      port: 3000
      targetPort: 3000

但是当我尝试向我在 auth 服务中创建的任何路由发送请求时,例如我创建了一个 triver。dev/service/account/signup post 快速路由器供用户注册。当我尝试通过 Postman 向路由发送 post 请求时,它给出了 ECONNRefused 错误 (404)。无法发送请求。为什么会这样? (我的 postman 工作正常。这不是 postman 端的问题。)

我做错了什么

该应用程序可以运行,但我就是无法访问路线。这绝对是一个入口问题。有谁可以帮助我吗?这是一个非常重要的项目。

This is what show up when I use the command 'kubectl get ingress'

Everything works fine when I run the application using skaffold dev.

这是因为你没有在 ingress 中提到主机名,同时确保你的 ingress controller 是 运行

入口示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: hello-world.info
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web
                port:
                  number: 8080

主持人:你好-world.info

参考:https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/

您也可以结帐:https://kubernetes.io/docs/concepts/services-networking/ingress/

如果您已在 ingress 中设置默认后端并且 host 不是问题

确保您在 HTTP 而不是 HTTPS

上发送请求
nginx.ingress.kubernetes.io/ssl-redirect: "false"

因为您没有使用证书SSL/TLS所以请尝试URL和HTTP