安装MetalLB

集群准备

  • 准备好一个kubernetes集群,版本在1.9.0或以上。这里我们准备了一个集群,有两个节点,版本为1.14.0

  • 网络插件使用flannelWeave Net,如果使用Calico,则不要使用BGP模式。这里我们使用CalicoIPIP模式。

  • kube-proxy要设置为iptables而不能是ipvs

安装

下载metallb.yaml文件,然后直接安装

$ wget https://raw.githubusercontent.com/google/metallb/v0.7.3/manifests/metallb.yaml
$ kubectl apply -f metallb.yaml

上述命令会创建命名空间metallb-system并在该命名空间中安装MetalLB相关资源。安装成功后,验证以下组件应该运行正常

$ kubectl get deploy -n metallb-system
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
controller   1/1     1            1           40s

$ kubectl get daemonset -n metallb-system
NAME      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
speaker   2         2         2       2            2           <none>          77s

配置

安装成功后,MetalLB的组件处于空闲状态,因为还没有配置。接下来,我们创建如下的一个配置,注意addresses应该和集群主机在同一个网段:

使用

MetalLB配置好以后,我们就可以来发布一个类型为LoadBalancer的服务了。MetalLB会把相应的事件写入到Service中,我们可以通过kubectl describe service <service-name>来查看与定位问题。

首先我们创建一个Deployment,发布两个实例:

接下来,我们发布一个Service

然后怎么访问呢?

卸载

删除metallb.yaml中的所有资源即可:

$ kubectl delete -f metallb.yaml

Reference

Last updated

Was this helpful?