我看到一些示例,其中Kubernetes集群安装了入口控制器,然后入口类添加了注释和主机,如下所示。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: testsvc.k8s.privatecloud.com
http:
我不确定安装了哪个服务以及使用DNS “k8s.privatecloud.com”配置了哪些IP以便路由请求? DNS路由“k8s.privatecloud.com”如何将请求路由到Kubernetes群集?如何进入kubernetes桥接工作?
此外,可能有许多服务配置了主机规则,如
testsvc.k8s.privatecloud.com
testsvc1.k8s.privatecloud.com
testsvc2.k8s.privatecloud.com
当我们点击服务testvc.k8s.privatecloud.com或testsvc1.k8s.privatecloud.com时,子域路由如何工作...
由于
答案 0 :(得分:1)
给定示例中所有主机名的DNS(例如Function ltv_w(segment_nbr, ltv)
Select Case True
Case ltv <= 0.9 And segment_nbr = 1
ltv_w = 100.01
Case ltv <= 2# And segment_nbr = 1
ltv_w = 201.01
Case ltv <= 3# And segment_nbr = 1
ltv_w = -23.26
Case ltv <= 0.9 And segment_nbr = 2
ltv_w = -99.98
Case ltv <= 1.3 And segment_nbr = 3
ltv_w = 199.98
Case ltv <= 0.44 And segment_nbr = 4
ltv_w = -32.43
Case ltv <= 1.6 And segment_nbr = 4
ltv_w = 160.9
End Select
End Function
)将指向流量将通过其到达Ingress控制器的nginx的计算机或负载均衡器,如{{{{1}中所述。 3}}
子域路由传统上通过&#34;虚拟主机&#34;有时称为&#34; v-host-ing&#34;和nginx ingress使用HTTP testsvc.k8s.privatecloud.com
标头来知道哪个后端服务应该接收该流量。一些Ingress控制器能够通过https使用SNI进行相同的技巧。
答案 1 :(得分:1)
除了@Matthew L Daniel回答。 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请求更多详细信息时。