LoadBalancer 应用场景

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: LoadBalancer
  selector:
    app: web
  ports:
    - protocol: TCP
      port: 80        # 负载均衡器监听的端口
      targetPort: 8080 # Pod 监听的端口

应用场景:

  • 互联网应用(Web 前端、后端 API)
  • SaaS 平台
  • 云托管数据库(如 Google Cloud SQL)

2. 内部负载均衡(私有网络)

适用于:混合云或企业内网

  • 私有云企业内部网络 部署的 Kubernetes 集群,可以用 LoadBalancer 在内网分发流量,而不是使用 IngressNodePort
  • 例如,在 AWS EKS 使用 内部 ELB,在 Azure AKS 使用 Internal Load Balancer (ILB)。

示例:

apiVersion: v1
kind: Service
metadata:
  name: internal-lb
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
spec:
  type: LoadBalancer
  selector:
    app: internal-app
  ports:
    - protocol: TCP
      port: 443
      targetPort: 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 默认不会生效,需要 MetalLBHAProxy 来提供类似云环境的负载均衡功能。

方案:

  • MetalLB:轻量级 IP 负载均衡,部署详见文档:k8s部署MetalLB(新) - 蒲公英PGY - 博客园
  • HAProxy:反向代理+负载均衡
  • NGINX Ingress:基于 Ingress 进行 L7 负载均衡
  • LoadBalancer: 还可以针对Kubernetes 集群中数据库对外提供访问入口

示例:MetalLB

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: my-ip-pool
  namespace: 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: LoadBalancer
  LoadBalancerIP: 192.168.1.100 # 设置LoadBalancer的IP,可以多个LoadBalancer公用一个IP
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80        # 负载均衡器监听的端口
      targetPort: 8080 # Pod 监听的端口

5. 高可用负载均衡

适用于:高流量业务

  • 需要 分发高并发流量,可以使用 LoadBalancerIngress 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 高流量系统
posted @ 2025-03-14 11:05  蒲公英PGY  阅读(76)  评论(0)    收藏  举报