Kubernetes 关于牧场主的库伯内特斯-入口路径问题

Kubernetes 关于牧场主的库伯内特斯-入口路径问题,kubernetes,rancher,Kubernetes,Rancher,我已经创建了一个带有入口控制器的nodejs/express应用程序,该控制器在Rancher的Kubernetes上运行。只有默认的后端工作正常,我可以到达我用express创建的任何路线,例如,或 不起作用的是我定义的路径,例如或。在Pod日志中,每当我在我定义的路径之一上发出请求时,我都可以看到404 我一直在寻找一个解决方案,但现在没有成功。我看到很多人似乎由于不同的原因在入口和路径方面存在问题,但我还没有找到解决问题的方法。也许这里有人知道这个问题的解决方法吗 为了让ingressio

我已经创建了一个带有入口控制器的nodejs/express应用程序,该控制器在Rancher的Kubernetes上运行。只有默认的后端工作正常,我可以到达我用express创建的任何路线,例如,或

不起作用的是我定义的路径,例如或。在Pod日志中,每当我在我定义的路径之一上发出请求时,我都可以看到404

我一直在寻找一个解决方案,但现在没有成功。我看到很多人似乎由于不同的原因在入口和路径方面存在问题,但我还没有找到解决问题的方法。也许这里有人知道这个问题的解决方法吗

为了让ingression正常工作,我在这里使用了以下示例:

以下是我部署一切的方式:
kubectl create -f deployment1-config.yaml
kubectl create -f deployment2-config.yaml

kubectl expose deployment test-ingress-node-1 --target-port=5000 --type=NodePort kubectl expose deployment test-ingress-node-2 --target-port=5000 --type=NodePort

kubectl run nginx --image=nginx --port=80 kubectl expose deployment nginx --target-port=80 --type=NodePort

kubectl create -f ingress.yaml 部署-1.config.yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-node-adv-ingress
  annotations:
    kubernetes.io/ingress.class: "rancher"
    ingress.kubernetes.io/rewrite-target: /
spec:
  backend:
    serviceName: test-ingress-node-1
    servicePort: 5000
  rules:
  - host:
    http:
      paths:
      - path: /gg1
        backend:
          serviceName: test-ingress-node-1
          servicePort: 5000
      - path: /gg2
        backend:
          serviceName: test-ingress-node-2
          servicePort: 5000
apiVersion:extensions/v1beta1
种类:部署
元数据:
注释:
deployment.kubernetes.io/revision:“1”
世代:2
标签:
运行:test-ingres-node-1
名称:test-ingress-node-1
名称空间:默认值
资源版本:“123456”
selfLink:/api/extensions/v1beta1/namespace/default/deployments/test-ingres-node-1
规格:
副本:1份
选择器:
火柴标签:
运行:test-ingres-node-1
战略:
滚动更新:
最大涌浪:1
马克斯:1
类型:RollingUpdate
模板:
元数据:
creationTimestamp:空
标签:
运行:test-ingres-node-1
规格:
容器:
-图片:myProject服务最新版本
imagePullPolicy:始终
名称:test-ingress-node-1
端口:
-集装箱港口:5000
协议:TCP
资源:{}
terminationMessagePath:/dev/终止日志
DNS政策:集群优先
restartPolicy:始终
securityContext:{}
终止时间:30秒
地位:
可用副本:1
观测生成:2
副本:1份
更新的报告:1

部署-2.config.yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-node-adv-ingress
  annotations:
    kubernetes.io/ingress.class: "rancher"
    ingress.kubernetes.io/rewrite-target: /
spec:
  backend:
    serviceName: test-ingress-node-1
    servicePort: 5000
  rules:
  - host:
    http:
      paths:
      - path: /gg1
        backend:
          serviceName: test-ingress-node-1
          servicePort: 5000
      - path: /gg2
        backend:
          serviceName: test-ingress-node-2
          servicePort: 5000
apiVersion:extensions/v1beta1
种类:部署
元数据:
注释:
deployment.kubernetes.io/revision:“1”
世代:2
标签:
运行:test-ingres-node-2
名称:test-ingress-node-2
名称空间:默认值
资源版本:“123456”
selfLink:/api/extensions/v1beta1/namespace/default/deployments/test-ingres-node-2
规格:
副本:1份
选择器:
火柴标签:
运行:test-ingres-node-2
战略:
滚动更新:
最大涌浪:1
马克斯:1
类型:RollingUpdate
模板:
元数据:
creationTimestamp:空
标签:
运行:test-ingres-node-2
规格:
容器:
-图片:myProject服务最新版本
imagePullPolicy:始终
名称:test-ingress-node-2
端口:
-集装箱港口:5000
协议:TCP
资源:{}
terminationMessagePath:/dev/终止日志
DNS政策:集群优先
restartPolicy:始终
securityContext:{}
终止时间:30秒
地位:
可用副本:1
观测生成:2
副本:1份
更新的报告:1

正确的路径与node js资源端点相同!查看ingress Kubernetes文档

“在loadbalancer将流量定向到后端之前,主机和路径必须与传入请求的内容匹配。”


尝试将
ingres config.yaml
文件中
annotations
下的
ingres.kubernetes.io/rewrite-target://
行替换为以下行:

nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/rewrite-target: /