Kubernetes
没有给本地环境(Bare-metal
, On-Premise
)提供负载均衡实现,LoadBalancer
类型的服务主要在各大公有云厂商上能够得到原生支持。在本地环境创建LoadBalancer
类型的服务后,服务的EXTERNAL-IP
会一直处于<pending>
状态。这是因为在本地环境没有相应的controller
来处理这些LoadBalancer
服务。比如:
1 | [root@master1 vagrant]# kubectl get svc |
之前的文章<<基于LVS DR模式的Kubernetes Service External-IP实现>>介绍了手动设置EXTERNAL-IP
的方式实现外部负载均衡。本文通过在本地环境实现一个简单的controller
来处理LoadBalancer
类型服务自动实现负载均衡器。架构示意如图:

LoadBalancer
是位于Kubernetes
集群外的独立集群。可以通过ECMP
将请求分散到不同的LoaderBalancer
节点上,LoadBalancer
再将请求分发到Kubernetes
的node
上。