Kubernetes Ingress无法解析主机名

Kubernetes Ingress无法解析主机名,kubernetes,kubernetes-ingress,Kubernetes,Kubernetes Ingress,我首先创建了一个入口集群和入口服务,然后将请求路由到k8s集群中的NodePort serviceA(资源服务)和NodePort serviceB(人员配置服务),下面将应用一个入口文件(名为staffing ingress.yaml) 资源服务和人员配置服务可以从容器内部相互通信,同时从资源容器中点击curl命令“curl–v”,使用HTTP 200返回准确的结果,反之亦然。但是,如果像这样命中不完整的URL,则会抛出404错误 我对下面staffing-ingress.yaml文件中的路径

我首先创建了一个入口集群和入口服务,然后将请求路由到k8s集群中的NodePort serviceA(资源服务)和NodePort serviceB(人员配置服务),下面将应用一个入口文件(名为staffing ingress.yaml)

资源服务和人员配置服务可以从容器内部相互通信,同时从资源容器中点击curl命令“curl–v”,使用HTTP 200返回准确的结果,反之亦然。但是,如果像这样命中不完整的URL,则会抛出404错误

我对下面staffing-ingress.yaml文件中的路径路由方式表示怀疑。欢迎提出任何建议

以下是详细信息

使用nginx负载平衡器IP访问服务(人员配置或资源)不会返回结果并抛出404错误

Curl –v http:// a5b9f45d4119a11eabbd90a9c35f3125-1159448980.us-east-2.elb.amazonaws.com:80/api/resources throws the below error
* TCP_NODELAY set
* Connected to a5b9f45d4119a11eabbd90a9c35f3125-1159448980.us-east-2.elb.amazonaws.com (3.134.165.38) port 80 (#0)

< HTTP/1.1 404 Not Found
< Server: openresty/1.15.8.2
< X-Response-Time-ms: 0
预期结果
当使用具有URI“/api/resources/”的外部LB从入口命中时,它应该调用api服务。

就路由而言,一切都正常工作。 您使用的URL错误。 您必须使用此url

http://a5b9f45d41119a11abbd90a9c35f3125-1159448980.us-east-2.elb.amazonaws.com:80/api/resources/swagger/index.html

您必须在url中附加swagger/index.html,就像您在通过服务访问url时一样

curl –v http://staffing-service:8080/swagger/index.html


curl –v http:// a5b9f45d4119a11eabbd90a9c35f3125-1159448980.us-east-2.elb.amazonaws.com:80/api/resources/swagger/index.html

入口不会删除上下文路径

因此,您在进入之前对
www.xxx.yyy/api/resources/
的调用不等于进入之后对
www.xxx.yyy/
的调用。其思想是,您的支持服务还需要具有相同的上下文路径

您需要做的是为这两个服务添加上下文路径:

resources-service: www.xxx.yyy/api/resources/swagger/index.html
staffing-service: www.xxx.yyy/api/staffing/swagger/index.html

您使用了错误的URL。我已经提供了一个关于如何使用正确URL的答案。太好了!非常感谢,成功了。:)是否有可能在配置文件中进行任何更改,以使对…/api/resources本身的调用添加后缀/最后是swagger/index.html。是的,您可以在Staffing-ingres.YAML中添加“rewrite target”注释,如下所示:“ingres.kubernetes.io/rewrite-target:/api/resources/swagger/index.html”谢谢,在这种情况下,对/api/Staffing的请求也将被重定向到/api/resources/swagger/index.html。我们可以有多个重定向吗?您可以从此重定向中删除/api/staffing配置,并使用/api/staffing创建一个新的入口资源,而无需“重写目标”注释谢谢您的回复。我还没有测试,但我相信你是正确的,这应该是有效的。
resources-service: www.xxx.yyy/api/resources/swagger/index.html
staffing-service: www.xxx.yyy/api/staffing/swagger/index.html