Kubernetes - 入口路由的工作原理
Kubernetes - How ingress routing works
我看到一些示例,其中 Kubernetes 集群安装了入口控制器,然后入口 class 添加了注释和主机,如下所示。
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
)将指向机器或 load-balancer,流量将通过该机器到达 Ingress 控制器的 nginx,如 the kuberetes Ingress documentation
子域路由传统上是通过 "virtual-hosting" 完成的,有时称为 "v-host-ing",nginx 入口使用 HTTP Host:
header 来知道哪个后端服务应该接收那个交通。一些 Ingress 控制器能够使用 SNI 通过 https 实现同样的技巧。
除了@Matthew L大牛的回答。
kubernetes Ingress 充当外部网络和集群之间的代理。 object ingress 中解释了入口的行为。例如:
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 之间路由流量。 Ingress 除了其名称和端口外不包含任何有关服务的信息,每次需要更多详细信息时都需要从 api-server 请求。
我看到一些示例,其中 Kubernetes 集群安装了入口控制器,然后入口 class 添加了注释和主机,如下所示。
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
)将指向机器或 load-balancer,流量将通过该机器到达 Ingress 控制器的 nginx,如 the kuberetes Ingress documentation
子域路由传统上是通过 "virtual-hosting" 完成的,有时称为 "v-host-ing",nginx 入口使用 HTTP Host:
header 来知道哪个后端服务应该接收那个交通。一些 Ingress 控制器能够使用 SNI 通过 https 实现同样的技巧。
除了@Matthew L大牛的回答。 kubernetes Ingress 充当外部网络和集群之间的代理。 object ingress 中解释了入口的行为。例如:
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 之间路由流量。 Ingress 除了其名称和端口外不包含任何有关服务的信息,每次需要更多详细信息时都需要从 api-server 请求。