GKE 入口未根据 url 中的主机进行路由

GKE ingress not routing based on host in the url

我在 GKE 上为我的服务创建了以下入口(它是带有变量的 helm 图表的一部分)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: TestIngress
  annotations:
    kubernetes.io/ingress.class: "gce"
    kubernetes.io/ingress.global-static-ip-name: {{ $ingressExternalStaticIpName }}
spec:
  rules:
  - host: "web.frontend.com"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: {{ $webServiceName }}
            port:
              number: 80
  - host: "grpc.frontend.com"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: {{ $grpcServiceName }}
            port:
              number: 80
  defaultBackend:
    service:
      name: {{ $grpcServiceName }}
      port:
        number: 80

我修改了 /etc/hosts 使 web.frontend.com 指向静态 ip。那我运行

curl web.frontend.com

我意识到 grpc 服务正在响应我的请求。我读了这篇文档 https://kubernetes.io/docs/concepts/services-networking/ingress/,它说它基于主机 header 进行路由??这听起来有点奇怪,因为我假设主机的意思是 url。所以我尝试了

curl -H "Host:web.frontend.com:80" web.frontend.com

并且仍然得到 grpc 服务器的响应

入口主机究竟是如何工作的,还是我做错了什么?

第二天试了一下,成功了。该问题可能是由于 google 缓存