metallb使用

2019/08/21 CICD

metallb使用

MetalLB是使用标准路由协议的裸机Kubernetes集群的负载平衡器实现。

1、为什么要用metallb

​ Kubernetes没有为裸机群集提供网络负载均衡器(类型为LoadBalancer的服务)的实现,如果你的kubernetes集群没有在公有云的IaaS平台(GCP,AWS,Azure …)上运行,则LoadBalancers将在创建时无限期地保持“挂起”状态,也就是说只有公有云厂商自家的kubernetes支持LoadBalancer。MetalLB旨在通过提供与标准网络设备集成的网络LB实现来纠正这种不平衡,以便裸机集群上的外部服务也“尽可能”地工作。即MetalLB能够帮助你在kubernetes中创建LoadBalancer类型的kubernetes服务。

metallb官网地址:https://metallb.universe.tf/

2、如何在现有集群中安装

2.1、使用yaml文件在集群中部署

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

这个文件会创建metallb-system命名空间。

2.2、创建config.yaml文件提供ip池

wget https://raw.githubusercontent.com/google/metallb/v0.7.3/manifests/example-layer2-config.yaml

修改该文件

$ vim example-layer2-config.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.92.xxx-192.168.92.xxx

再执行

kubectl apply -f example-layer2-config.yaml

2.3、demo验证

metallb提供了一个nginx的demo进行验证,什么都不用修改,直接下载下来,创建即可。

$ wget https://raw.githubusercontent.com/google/metallb/master/manifests/tutorial-2.yaml
$ kubectl apply -f tutorial-2.yaml

这个yaml文件的内容很简单,就是一个deployment和service。

查看service,并通过external-ip访问即可。

$kubectl get service 

通过ping这个地址的命令,可以发现redirect到实际的节点地址上了。

Search

    欢迎添加我的个人微信号

    个人微信哦

    Table of Contents