NodePort,LoadBalance Services - 路由会发生什么?

时间:2017-07-07 00:31:48

标签: kubernetes

k8s文档并不十分清楚使用不同服务类型时路由会发生什么,这引出了一系列问题:

为了解决这个问题,请假设以下群集设置:

  • 3个节点:N_aN_bN_c
  • 1服务:S_1
  • 2个广告:P_x1P_x2属于服务的一部分S_1
  • P_x1正在N_a
  • 上投放
  • P_x2正在N_b
  • 上投放

1)使用NodePort S_1使用端口x时,群集中的所有节点是否都可以在端口x上使用该服务?或者只运行构成服务的pod的节点使端口x上的服务可用?因此,在这两种情况下,N_aN_b都会在端口S_1上提供x,但是我可以在端口N_c上点击x吗? / p>

2)NodePort依旧使用S_1,如果我在端口N_a上点击x,我只会被路由到P_x1(例如,在Node上本地运行的该服务的pod,或者我可以路由到P_x2,以便关闭节点并再次通过网络?

3)如果我将S_1作为LoadBalanced服务运行,那么负载均衡器是否只会将请求路由到N_aN_b?在点击N_aN_b时,这些请求仅分别路由到广告连接P_x1P_x2?那么通过网络跳一跳,还是会与所有三个节点通信并依赖它们各自进行第二级路由/负载均衡? (这似乎效率很低)。

4)Ingress控制器的路由功能(L7而不是L4除外)与LoadBalanced服务的功能有何不同?

1 个答案:

答案 0 :(得分:0)

1)是的。 NodePort在所有工作节点上打开一个端口。创建服务时,将在所有工作节点上创建iptables规则。当任何节点上的pod访问此服务的IP时,pod所在的物理节点上的iptables规则将相应地重定向其数据包。

2)两者。服务在所有关联的pod上进行WRR负载平衡。

3)我做裸机部署,所以我无法回答这个问题。

4)Afaik,Ingress是LoadBalancer的替代品。您可以部署在k8s群集中运行的自己的Ingress,而不是依赖云提供商的反向代理。