下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Kubernetes负载均衡器之MetalLB

作者:匿名     来源: 云计算点击数:733发布时间: 2022-07-14 21:07:18

标签: MetalLBkubernetes

  在非云环境中,可以使用MetalLB 是提供kubernetes中LoadBalancer的服务的。MetalLB无法凭空创建IP地址,因此您必须为其提供可以使用的IP地址池。

  简介

  在kubernets中,可以使用Loadbalancer的方式对外提供服务,在一般云环境中都有对应的负载均衡的产品。

  如果在非云环境中,可以使用MetalLB 是提供kubernetes中LoadBalancer的服务的。

  MetalLB无法凭空创建IP地址,因此您必须为其提供可以使用的IP地址池。

  MetalLB 为服务分配外部 IP 地址后,需要使群集之外的网络知道该 IP“位于”群集中。

  协议

  二层模式 (ARP/NDP):从局域网的角度来看,播报机只是有多个IP地址。

  缺点:

  • 存在单节点瓶颈:IP会被分配到单个节点上,所以节点的网络瓶颈会成为负载均衡其的瓶颈。
  • 故障故障转移慢: IP 关联的 MAC 地址已更改,客户端ARP表有可能更新不及时,导致故障转移慢。

  BGP模式:在 BGP 模式下,群集中的所有计算机都建立边界网关协议与您控制的附近路由器的对等会话,并告诉这些路由器如何将流量转发到服务 IP。使用 BGP 可以跨越多个节点实现真正的负载平衡,并通过 BGP 的策略机制实现细粒度的流量控制。

  最大的缺点是基于 BGP 的负载平衡无法对地址后端集中的更改做出优雅反应。这意味着,当群集节点出现故障时,您应该期望与服务的所有活动连接都已断开。

  网络插件

  MetalLB完全支持的网络插件Canal、Cilium、Flannel、Kube-ovn等。

  如果kube-proxy运行在IPVS模式先,需要设置strictARP: true。

  复制

  1. kubectl edit configmap -n kube-system kube-proxy

  复制

  1. apiVersion: kubeproxy.config.k8s.io/v1alpha1

  2. kind: KubeProxyConfiguration

  3. mode: "ipvs"

  4. ipvs:

  5. strictARP: true

  安装

  复制

  1. kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.3/config/manifests/metallb-native.yaml

  或者通过helm安装。

  复制

  1. helm repo add metallb https://metallb.github.io/metallb

  2. helm install metallb metallb/metallb

  二层协议配置

  配置分配的IP池。

  复制

  1. apiVersion: metallb.io/v1beta1

  2. kind: IPAddressPool

  3. metadata:

  4. name: first-pool

  5. namespace: metallb-system

  6. spec:

  7. addresses:

  8. - 192.168.128./24

  9. - 192.168.122.200-192.168.122.240

  10. - fca0:fe53:0ccd:e799::/124

  如果在L2Advertisement无指定IP池,默认就与所有的IP池关联。

  复制

  1. apiVersion: metallb.io/v1beta1

  2. kind: L2Advertisement

  3. metadata:

  4. name: example

  5. namespace: metallb-system

  也可以手动通过指定IP池。

  复制

  1. apiVersion: metallb.io/v1beta1

  2. kind: L2Advertisement

  3. metadata:

  4. name: example

  5. namespace: metallb-system

  6. spec:

  7. ipAddressPools:

  8. - first-pool

  BGP 协议配置

  需要配置 MetalLB 如何与一个或多个外部 BGP 路由器建立会话。

  对于具有一个 BGP 路由器和一个 IP 地址范围的基本配置:

  • MetalLB 连接到的路由器 IP 地址。
  • 路由器的 AS 编号。
  • MetalLB应使用的AS编号。
  • 以 CIDR 前缀表示的 IP 地址范围。

  复制

  1. apiVersion: metallb.io/v1beta2

  2. kind: BGPPeer

  3. metadata:

  4. name: sample

  5. namespace: metallb-system

  6. spec:

  7. myASN: 64500

  8. peerASN: 64501

  9. peerAddress: 10.0.0.1

  10. ---

  11. apiVersion: metallb.io/v1beta1

  12. kind: IPAddressPool

  13. metadata:

  14. name: first-pool

  15. namespace: metallb-system

  16. spec:

  17. addresses:

  18. - 192.168.1.240-192.168.1.250

  19. ---

  20. apiVersion: metallb.io/v1beta1

  21. kind: BGPAdvertisement

  22. metadata:

  23. name: example

  24. namespace: metallb-system

  25. spec:

  26. ipAddressPools:

  27. - first-pool

  使用

  在配置service的时候,修改type: LoadBalancer,保存之后就可以查看分配的IP。

  复制

  1. kubectl get svc -A

  总结

  云环境还是直接使用LB产品稳定、省事。如果是测试环境,可以使用MetalLB节约成本。

  来源: 今日头条

    >>>>>>点击进入计算专题

赞(13)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程