在非云环境中,可以使用MetalLB 是提供kubernetes中LoadBalancer的服务的。MetalLB无法凭空创建IP地址,因此您必须为其提供可以使用的IP地址池。
简介
在kubernets中,可以使用Loadbalancer的方式对外提供服务,在一般云环境中都有对应的负载均衡的产品。
如果在非云环境中,可以使用MetalLB 是提供kubernetes中LoadBalancer的服务的。
MetalLB无法凭空创建IP地址,因此您必须为其提供可以使用的IP地址池。
MetalLB 为服务分配外部 IP 地址后,需要使群集之外的网络知道该 IP“位于”群集中。
协议
二层模式 (ARP/NDP):从局域网的角度来看,播报机只是有多个IP地址。
缺点:
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 地址范围的基本配置:
复制
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节约成本。
来源: 今日头条
>>>>>>点击进入云计算专题
¥499.00
¥499.00
¥99.00
¥10500.00