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到实际的节点地址上了。