Kubernetes - 入口路由如何工作

时间:2018-03-22 05:41:47

标签: kubernetes kubernetes-ingress

我看到一些示例,其中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时,子域路由如何工作...

由于

2 个答案:

答案 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请求更多详细信息时。