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