我在GKE上为我的服务创建了以下入口(它是带变量的舵图的一部分(
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/并且它说它基于主机头路由??这听起来有点奇怪,因为我认为host是指url。所以我尝试了
curl -H "Host:web.frontend.com:80" web.frontend.com
仍然得到grpc服务器的响应
入侵主机究竟是如何工作的,还是我做错了什么?
第二天尝试了一下,它就工作了。问题可能是由于谷歌缓存