跳转至

Metallb

在 Kubernetes 中, 对于 LoadBancer 类型,需要使用云提供商的负载均衡器向外部暴露服务,外部负载均衡器可以将流量路由到自动创建的 NodePort 服务和 ClusterIP 服务上。 所以对于 LoadBancer 类型的 Service,必须要有 Cloud Provider 加持才能实现。 也就是说在裸机的 K8s 集群无法使用 LoadBancer 类型的服务。否则,您会发现 LoadBancer 的服务一直处于 Pending 状态。

metallb

Metallb 是一款开源软件,它采用标准的路由协议(ARP 或 BGP)实现了裸机 K8s 集群的负载均衡功能。

L2 模式 (ARP)

L2 模式下,Metallb 会通过 memberlist 选举出一个 Leader 节点,此节点负责向本地网络宣告 LoadBalancerIP。 从网络的角度来看,这台机器似乎有多个 IP 地址,它会响应来自 LoadBancerIPARP 请求。 L2 模式最大的优势是它不需要依赖譬如路由器等硬件的依赖便可工作。

  • 优势:通用型,不需要额外的硬件支持
  • 缺点:单节点的带宽限制、稍缓慢的故障转移(10s 左右)

L3 模式 (BGP)

在 BGP 模式下,集群中的每个节点都会与路由器建立 BGP Peer,并使用该会话向集群外部通告集群服务的 LoadBalanceIP。 BGP Router 基于每个不同的连接选择一个下一跳(即集群某个节点,这不同于 L2 模式下所有流量先到达某个 Leader 节点)。

  • 优势:负载均衡性更好
  • 缺点:当某个节点故障,所有 BGP 会话将会中断

评论