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