You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GKE、EKS等K8s云服务LoadBalancer Service分配外部IP原理及自建集群配置方法

自建K8s集群LoadBalancer Service外部IP配置方案

原生K8s默认没有内置LoadBalancer类型Service的IP分配能力,自建场景下最主流的实现方案是部署MetalLB控制器,配置流程如下:

  • 提前准备一段企业内网未被占用、且和集群节点网络可达的IP段,作为LoadBalancer的地址池
  • 安装MetalLB组件,执行命令:
    kubectl apply -f metallb-native.yaml
    等待metallb-system命名空间下的所有Pod进入Running状态
  • 配置IP地址池资源,示例配置如下:
    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      name: internal-lb-pool
      namespace: metallb-system
    spec:
      addresses:
      - 172.16.20.100-172.16.20.200 # 替换为你自己预留的IP段
    
  • 配置二层通告规则(绝大多数内网二层网络场景使用该模式即可):
    apiVersion: metallb.io/v1beta1
    kind: L2Advertisement
    metadata:
      name: l2-advertise
      namespace: metallb-system
    spec:
      ipAddressPools:
      - internal-lb-pool
    

配置完成后,新建LoadBalancer类型的Service时,MetalLB会自动从地址池中分配可用IP填入Service的EXTERNAL-IP字段,内网可直接访问该IP访问服务。如果你的集群是跨网段的三层架构,也可以配置MetalLB的BGP模式,和上层路由器打通BGP邻居实现跨网段路由。

公有云托管K8s LoadBalancer分配实现逻辑

GKE、EKS这类公有云托管K8s的LoadBalancer分配能力,是通过云厂商内置的Cloud Controller Manager(CCM)组件实现的,核心流程如下:

  • 用户创建LoadBalancer类型的Service后,集群apiserver产生资源创建事件
  • 云厂商的CCM组件监听到LoadBalancer类型Service的变更事件,拉取Service的端口、后端选择器、自定义注解等配置
  • CCM调用云厂商的负载均衡产品API,自动创建符合配置要求的公网/私网负载均衡实例,同时将Service对应的后端节点(或Pod,若使用支持直接绑定Pod的CNI插件)加入负载均衡的后端组,配置对应的端口转发、健康检查、安全组等规则
  • 负载均衡实例创建完成后,CCM将实例的公网/私网IP回写到Service的EXTERNAL-IP字段,分配流程结束

内容的提问来源于stack exchange,提问作者Duc Vo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:15:04