Kubernetes 入口 |无法解析主机名
Kubernetes Ingress | could not resolve hostname
我先创建了一个ingress集群和一个ingress服务,然后将请求路由到k8s-cluster中的NodePort-serviceA(resources-service)和NodePort-serviceB(staffing-service),一个ingress文件(按人员名称-ingress.yaml)应用如下所述。
Resources-service 和 Staffing-service 可以在容器内部相互通信,当输入 curl 命令“curl –v http://staffing-service:8080/swagger/index.html” from resources container returns accurate result with HTTP 200 and vice versa. However if the incomplete URL is hit like this http://staffing-service:8080/ 时,它会抛出 404 错误。
我对下面的 staffing-ingress.yaml 文件中的路径路由方式有疑问。欢迎提出任何建议。
详情如下
使用 nginx 负载均衡器 IP 访问服务(人员或资源)不会 return 结果并抛出 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
人员-Ingress.YAML
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: staffing-ingress
namespace: default
annotations:
ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
http:
paths:
- path: /api/resources
backend:
serviceName: resources-service
servicePort: 8001
- path: /api/staffing
backend:
serviceName: staffing-service
servicePort: 8080
预期结果
是当使用具有 URI“/api/resources/”的外部 LB 从入口命中时,它应该调用 api-服务 http://resources-service:8001/swagger/index.html.
路由方面一切正常。
您使用的 URL 错误。
你必须使用这个 url
http:// a5b9f45d4119a11eabbd90a9c35f3125-1159448980.us-east-2.elb.amazonaws.com:80/api/resources/swagger/index.html
您必须在 url 中附加 swagger/index.html 就像您在通过服务访问它时所做的那样。
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
Ingress 不删除上下文路径!
因此您在 Ingress 之前对 www.xxx.yyy/api/resources/
的调用不等于 Ingress 之后对 www.xxx.yyy/
的调用。这个想法是你的支持服务也需要有相同的上下文路径。
您需要做的是为两个服务添加上下文路径:
resources-service: www.xxx.yyy/api/resources/swagger/index.html
staffing-service: www.xxx.yyy/api/staffing/swagger/index.html
我先创建了一个ingress集群和一个ingress服务,然后将请求路由到k8s-cluster中的NodePort-serviceA(resources-service)和NodePort-serviceB(staffing-service),一个ingress文件(按人员名称-ingress.yaml)应用如下所述。
Resources-service 和 Staffing-service 可以在容器内部相互通信,当输入 curl 命令“curl –v http://staffing-service:8080/swagger/index.html” from resources container returns accurate result with HTTP 200 and vice versa. However if the incomplete URL is hit like this http://staffing-service:8080/ 时,它会抛出 404 错误。
我对下面的 staffing-ingress.yaml 文件中的路径路由方式有疑问。欢迎提出任何建议。
详情如下
使用 nginx 负载均衡器 IP 访问服务(人员或资源)不会 return 结果并抛出 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
人员-Ingress.YAML
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: staffing-ingress
namespace: default
annotations:
ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
http:
paths:
- path: /api/resources
backend:
serviceName: resources-service
servicePort: 8001
- path: /api/staffing
backend:
serviceName: staffing-service
servicePort: 8080
预期结果 是当使用具有 URI“/api/resources/”的外部 LB 从入口命中时,它应该调用 api-服务 http://resources-service:8001/swagger/index.html.
路由方面一切正常。 您使用的 URL 错误。 你必须使用这个 url
http:// a5b9f45d4119a11eabbd90a9c35f3125-1159448980.us-east-2.elb.amazonaws.com:80/api/resources/swagger/index.html
您必须在 url 中附加 swagger/index.html 就像您在通过服务访问它时所做的那样。
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
Ingress 不删除上下文路径!
因此您在 Ingress 之前对 www.xxx.yyy/api/resources/
的调用不等于 Ingress 之后对 www.xxx.yyy/
的调用。这个想法是你的支持服务也需要有相同的上下文路径。
您需要做的是为两个服务添加上下文路径:
resources-service: www.xxx.yyy/api/resources/swagger/index.html
staffing-service: www.xxx.yyy/api/staffing/swagger/index.html