Kubernetes中的负载平衡

时间:2019-03-30 06:29:22

标签: kubernetes

我在http://blog.cowger.us/2018/07/25/using-kubernetes-externaldns-with-a-home-bare-metal-k8s.html中阅读了回合metalLB 作家说

  

裸机操作员只剩下两个较小的工具   用户流量进入其群集“ NodePort”和“ externalIP”   服务。这两个选项均具有明显的缺点   生产用途,使裸金属集群成为二等公民   在Kubernetes生态系统中。

我想知道这是什么重大缺点。

1 个答案:

答案 0 :(得分:2)

带有type: NodePort的服务将在所有节点上打开相同的端口,从而使客户端可以将其流量定向到任何节点,并且kube-proxy可以从那时开始平衡Pod之间的流量。您在这里面临3个问题:

  1. 除非您对依赖单个节点感到满意,否则需要创建自己的负载均衡解决方案以定位多个(甚至所有)节点。当然可以,但是您需要额外的软件或硬件以及配置
  2. 对于上面的配置,您还需要一种机制来发现节点的IP地址,保持该列表的更新并监视节点的运行状况。再次,虽然可行,但会带来额外的痛苦
  3. NodePort仅支持从特定范围内选择端口号(默认为30000-32767)。范围可以修改,但是您将无法通过这种方式选择喜欢的端口,例如80或443。同样,如果您有一个外部负载平衡解决方案来隐藏此实现细节,那不是一个大问题

对于使用type: ClusterIP(默认)和externalIPs: [...](必须指定节点的IP地址)的服务,您的问题将是:

  1. 您需要一些方法来选择一些运行状况良好的节点,并使用该列表更新Service对象。可行,但需要额外的自动化。
  2. 相同1.,用于NodePort
  3. 尽管您可以在此处选择任意端口号(所以可以使用80、443、3306),但是您将需要做一些内务处理,以避免尝试从两个不同的Service对象在同一节点上使用相同的端口号。再次可行,但您可能还有更好的事情要做