LoadBalancer 应用场景
Kubernetes 中的 LoadBalancer
主要用于 对外暴露服务,适用于以下场景:
1. 公网服务暴露
适用于:云环境(AWS, GCP, Azure)
- 当你在云环境中部署 Web 应用、API 服务等,希望它们可以被公网访问时,可以使用
LoadBalancer
类型的Service
直接暴露服务。 - 云平台(如 AWS ELB, GCP LB)会自动创建一个负载均衡器,并将流量路由到 Kubernetes 集群中的
Pod
。
示例:
apiVersion: v1
kind: Service
metadata:name: my-web-app
spec:type: LoadBalancerselector:app: webports:- protocol: TCPport: 80 # 负载均衡器监听的端口targetPort: 8080 # Pod 监听的端口
应用场景:
- 互联网应用(Web 前端、后端 API)
- SaaS 平台
- 云托管数据库(如 Google Cloud SQL)
2. 内部负载均衡(私有网络)
适用于:混合云或企业内网
- 在 私有云 或 企业内部网络 部署的 Kubernetes 集群,可以用
LoadBalancer
在内网分发流量,而不是使用Ingress
或NodePort
。 - 例如,在 AWS EKS 使用 内部 ELB,在 Azure AKS 使用 Internal Load Balancer (ILB)。
示例:
apiVersion: v1
kind: Service
metadata:name: internal-lbannotations:service.beta.kubernetes.io/aws-load-balancer-internal: "true"
spec:type: LoadBalancerselector:app: internal-appports:- protocol: TCPport: 443targetPort: 8443
应用场景:
- 内部 API 网关
- 内部微服务通信
- 企业级 Kubernetes 集群的流量管理
3. 负载均衡多个 Kubernetes 集群
适用于:多集群或混合云架构
- 如果你有多个 Kubernetes 集群(如多个数据中心、不同的云环境),可以使用
LoadBalancer
在多个集群之间做 跨集群负载均衡。 - 例如,使用 Cloud Load Balancer(如 AWS ALB, GCP LB),或者 MetalLB + BGP 来均衡流量。
应用场景:
- 跨地域微服务部署
- 多活集群(Active-Active)
- 灾备环境(DR)
4. Bare Metal Kubernetes 负载均衡
适用于:本地数据中心或裸机 Kubernetes
- 在本地 Kubernetes 集群中,
LoadBalancer
默认不会生效,需要 MetalLB 或 HAProxy 来提供类似云环境的负载均衡功能。
方案:
- MetalLB:轻量级 IP 负载均衡,部署详见文档:k8s部署MetalLB(新) - 蒲公英PGY - 博客园
- HAProxy:反向代理+负载均衡
- NGINX Ingress:基于
Ingress
进行 L7 负载均衡 - LoadBalancer: 还可以针对Kubernetes 集群中数据库对外提供访问入口
示例:MetalLB
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:name: my-ip-poolnamespace: metallb-system
spec:addresses:- 192.168.1.100-192.168.1.200
应用场景:
- 物理机集群(裸机 K8s)
- 本地数据中心 Kubernetes
- 需要
LoadBalancer
但没有云环境支持的情况
apiVersion: v1
kind: Service
metadata:name: my-loadbalancer-service
spec:type: LoadBalancerLoadBalancerIP: 192.168.1.100 # 设置LoadBalancer的IP,可以多个LoadBalancer公用一个IPselector:app: my-appports:- protocol: TCPport: 80 # 负载均衡器监听的端口targetPort: 8080 # Pod 监听的端口
5. 高可用负载均衡
适用于:高流量业务
- 需要 分发高并发流量,可以使用
LoadBalancer
和Ingress Controller
结合,或者 云端负载均衡 + Kubernetes Service。
最佳实践:
- L4 负载均衡(TCP/UDP):使用
LoadBalancer
(云 LB、MetalLB) - L7 负载均衡(HTTP/HTTPS):使用
Ingress Controller
(Nginx Ingress, Traefik)
总结
应用场景 | 方案 | 适用环境 |
---|---|---|
公网服务 | LoadBalancer Service |
AWS, GCP, Azure |
内网服务 | LoadBalancer + Internal LB |
企业私有云 |
多集群负载均衡 | 跨集群 LoadBalancer |
混合云, DR |
裸机 Kubernetes | MetalLB, HAProxy | 数据中心, On-Prem |
高可用负载均衡 | LoadBalancer + Ingress |
高流量系统 |