【问题标题】:Loadbalancing in kubernetesKubernetes 中的负载均衡
【发布时间】:2019-03-30 15:02:59
【问题描述】:

我在http://blog.cowger.us/2018/07/25/using-kubernetes-externaldns-with-a-home-bare-metal-k8s.html 中读到了一篇关于 metalLB 的文章 作家们说

裸机集群运营商只剩下两个较小的工具可以带来 用户流量进入他们的集群,“NodePort”和“externalIPs” 服务。这两个选项都有明显的缺点 生产使用,这使得裸机集群成为二等公民 在 Kubernetes 生态系统中。

我想知道这个显着的缺点是什么。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 是的,以上所有。 MetalLB 将为您的type: LoadBalancer 服务提供 VIP,这些服务将被负载平衡。您选择的端口等。显然,您可以使用 MetalLB 本身获得一些额外的移动部件。你会想读metallb.universe.tf/concepts
    • 如果我们在externalIPs: [...] 中使用来自NodeCIDR 的IP,为什么我们称它为externalIP?是否有必要使用节点子网中的 ips?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 2022-10-23
    • 2019-07-11
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    相关资源
    最近更新 更多