尊龙凯时

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

尊龙凯时

网络清静是一个永恒的命题。江苏尊龙凯时作为海内信息清静行业的先行者,始终关注源端手艺,一直探索网络清静前沿手艺,洞察网络清静手艺的发趋势,为推进网络清静领域手艺立异与工业生态生长,孝顺一份实力。


本文主要通过在使用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"}

关注数据  包管未来

扫码|关注我们

微信号|江苏尊龙凯时

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


创立更清静的数字未来 身份与会见清静 · 数据清静 · 清静治理与运营 · 清静效劳 · 军工保密 审查更多
【网站地图】【sitemap】