我看到了一些示例,其中 Kubernetes 集群安装了入口控制器,然后添加了带有注释和主机的入口类,如下所示。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: testsvc.k8s.privatecloud.com
http:
我不确定安装了哪个服务以及哪个 IP 配置了 DNS"k8s.privatecloud.com">以路由请求?DNS 路由"k8s.privatecloud.com">如何将请求路由到 Kubernetes 集群?Kubernetes 桥接的入口是如何工作的?
此外,可能有许多服务配置了主机规则,例如,
testsvc.k8s.privatecloud.com
testsvc1.k8s.privatecloud.com
testsvc2.k8s.privatecloud.com
当我们遇到服务 testsvc.k8s.privatecloud.com 或 testsvc1.k8s.privatecloud.com 时,子域路由在这里是如何工作的......
谢谢
示例中所有主机名的 DNS(例如 testsvc.k8s.privatecloud.com
( 将指向流量将通过其到达入口控制器的 nginx 的计算机或负载均衡器,如 kuberetes 入口文档中所述
子域路由传统上是通过"虚拟主机"(有时称为"v-host-ing"(完成的,nginx入口使用HTTP Host:
标头来了解哪个后端服务应该接收该流量。一些入口控制器能够通过https使用SNI进行相同的技巧。
除了@Matthew L Daniel回答。kubernetes 入口充当外部网络和集群之间的代理。入口的行为在对象入口中进行了说明。例如:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /foo
backend:
serviceName: s1
servicePort: 80
- path: /bar
backend:
serviceName: s2
servicePort: 80
上面解释了如何在 2 个后端 s1 和 s2 之间路由流量。入口除了名称和端口外,不保存有关服务的任何信息,每次需要更多详细信息时,都需要从 API 服务器请求。