ca88

干货分享|Kubernetes负载均衡器之MetalLB
更新时间:2022-09-27 来源: 编辑:治理员 浏览:302

ca88

网络宁静是一个永恒的命题。江苏ca88作为海内信息宁静行业的先行者 ,始终关注源端技术 ,不绝探索网络宁静前沿技术 ,洞察网络宁静技术的发趋势 ,为推进网络宁静领域技术立异与工业生态生长 ,孝敬一份力量。


本文主要通过在使用Kubernetes的历程中 ,如何将效劳开放到集群外部会见类似情况进行剖析 ,希望给予读者朋友专业的建议。


MetalLB简介

在使用Kubernetes的历程中 ,如何将效劳开放到集群外部会见是一个重要的问题。当使用云平台(阿里云、腾讯云、AWS、微软云等)的Kubernetes效劳时 ,我们可以通过配置 service 为 LoadBalancer 模式来绑定云平台提供的负载均衡器 ,从而实现外网的会见。可是 ,如果关于自建的 Kubernetes裸机集群 ,这个问题则要麻烦的多。

祼机Kubernetes集群不支持负载均衡的方法 ,可用的有NodePort、HostNetwork、ExternalIPs等方法来实现外部会见。但这些方法都有各自的适用场景 ,也或多或少保存一些缺点 ,随着MetalLB的降生 ,自建的裸机Kubernetes集群也可以选择负载均衡的计划进行业务测试。

MetalLB 旨在通过提供与标准网络设备集成的Network LB实施来解决这个痛点 ,从而使裸机群集上的外部效劳也尽可能“正常运行” ,减少运维上的治理本钱。它是一种纯软件的解决计划 ,对理解LoadBalancer也有一定的参考价值。

MetalLB官方网站:https://metallb.universe.tf

MetalLB项目地点:https://github.com/metallb/metallb

MetalLB提供了两个功效:

1. 地点分派:当创立 LoadBalancer Service 时 ,MetalLB会为其分派IP地点。这个IP地点是从预先配置的IP地点库获取的。同样 ,当Service删除后 ,已分派的IP地点会重新回到地点库。

2. 对外广播:分派了IP地点之后 ,需要让集群外的网络知道这个地点的保存。MetalLB 使用了标准路由协议实现:ARP、NDP或者BGP。(广播的方法有两种 ,一种是 Layer 2 模式 ,使用 ARP(IPV4)/NDP(IPV6)协议 ;另一种是BPG协议。)

本文主要介绍Layer 2模式 ,也就是OSI 二层。下图是MetalLB Layer 2模式的示意图。

图1-Layer 2模式

如何装置MetalLB

下载yaml文件 ,凭据自己的需求下载对应的版本 ,最新的版本为0.13.5

https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/metallb.yaml


[root@k8s-01 tools]# kubectl create -f metallb.yaml 

namespace/metallb-system created

serviceaccount/controller created

serviceaccount/speaker created

clusterrole.rbac.authorization.k8s.io/metallb-system:controller created

clusterrole.rbac.authorization.k8s.io/metallb-system:speaker created

role.rbac.authorization.k8s.io/config-watcher created

clusterrolebinding.rbac.authorization.k8s.io/metallb-system:controller created

clusterrolebinding.rbac.authorization.k8s.io/metallb-system:speaker created

rolebinding.rbac.authorization.k8s.io/config-watcher created

daemonset.apps/speaker created

deployment.apps/controller created


检察MetalLB的pod信息

[root@k8s-01 tools]# kubectl get pods -n metallb-system

NAME                          READY   STATUS    RESTARTS   AGE

controller-788798f984-nwzzk   1/1     Running   0          3m5s

speaker-nlqbj                 1/1     Running   0          3m5s

speaker-vkpg9                 1/1     Running   0          3m5s

speaker-vzg5w                 1/1     Running   0          3m5s

配置MetalLB

[root@k8s-01 tools]# more layer2-config.yaml 

apiVersion: v1

kind: ConfigMap

metadata:

  namespace: metallb-system

  name: config

data:

  config: |

    address-pools:

    - name: my-ip-space

      protocol: layer2

      addresses:

      - 192.168.202.140-192.168.202.240


[root@k8s-01 tools]# kubectl create -f layer2-config.yaml 

configmap/config created

该配置文件指定在metallb-system下生成一个名为config的标准Kubernetes ConfigMap ,配置项中包括两条信息 ,一个是使用了layer 2协议 ,一个是地点的取值规模为 192.168.202.140-192.168.202.240。

Nginx测试MetalLB

[root@k8s-01 tools]# kubectl create -f nginx-test-metalLB.yaml

deployment.apps/nginx created

service/nginx created

[root@k8s-01 tools]# kubectl get pods

NAME                     READY   STATUS    RESTARTS   AGE

nginx-5f78746595-tvq5j   1/1     Running   0          11s

[root@k8s-01 tools]# kubectl get svc nginx

NAME    TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)        AGE

nginx   LoadBalancer   10.110.214.139   192.168.202.141   80:32240/TCP   18s

[root@k8s-01 tools]# 

[root@k8s-01 tools]# 

[root@k8s-01 tools]#  kubectl logs -l component=speaker -n metallb-system

{"caller":"main.go:161","event":"startUpdate","msg":"start of service update","service":"default/Kubernetes","ts":"2020-11-23T06:12:32.221525812Z"}

关注数据  包管未来

扫码|关注我们

微信号|江苏ca88

网址|http://www.bwda.net


创立更宁静的数字未来 身份与会见宁静 · 数据宁静 · 宁静治理与运营 · 宁静效劳 · 军工保密 检察更多
网站地图网站地图