Kubernetes负载均衡器之MetalLB
发布时间:2022-08-03 12:24:19 所属栏目:云计算 来源:互联网
导读:简介 在kubernets中,可以使用Loadbalancer的方式对外提供服务,在一般云环境中都有对应的负载均衡的产品。 如果在非云环境中,可以使用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。 复制 kubectl edit configmap -n kube-system kube-proxy 1. 复制 apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration mode: "ipvs" ipvs: strictARP: true 1. 2. 3. 4. 5. 安装 复制 kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.3/config/manifests/metallb-native.yaml 1. 或者通过helm安装。 复制 helm repo add metallb https://metallb.github.io/metallb helm install metallb metallb/metallb 1. 2. 二层协议配置 配置分配的IP池。 复制 apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: first-pool namespace: metallb-system spec: addresses: - 192.168.128./24 - 192.168.122.200-192.168.122.240 - fca0:fe53:0ccd:e799::/124 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 如果在L2Advertisement无指定IP池,默认就与所有的IP池关联。 复制 apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: example namespace: metallb-system 1. 2. 3. 4. 5. 也可以手动通过指定IP池。 复制 apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: example namespace: metallb-system spec: ipAddressPools: - first-pool 1. 2. 3. 4. 5. 6. 7. 8. BGP 协议配置 需要配置 MetalLB 如何与一个或多个外部 BGP 路由器建立会话。 对于具有一个 BGP 路由器和一个 IP 地址范围的基本配置: MetalLB 连接到的路由器 IP 地址。 路由器的 AS 编号。 MetalLB应使用的AS编号。 以 CIDR 前缀表示的 IP 地址范围。 复制 apiVersion: metallb.io/v1beta2 kind: BGPPeer metadata: name: sample namespace: metallb-system spec: myASN: 64500 peerASN: 64501 peerAddress: 10.0.0.1 --- apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: first-pool namespace: metallb-system spec: addresses: - 192.168.1.240-192.168.1.250 --- apiVersion: metallb.io/v1beta1 kind: BGPAdvertisement metadata: name: example namespace: metallb-system spec: ipAddressPools: - first-pool 使用 在配置service的时候,修改type: LoadBalancer,保存之后就可以查看分配的IP。 复制 kubectl get svc -A 1. 总结 云环境还是直接使用LB产品稳定、省事。如果是测试环境,可以使用MetalLB节约成本。 (编辑:信阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |