首页/云/Kubernetes 速查/LoadBalancer 一直 Pending 的排查
网络与服务55 条

LoadBalancer 一直 Pending 的排查

LoadBalancer Service 的 EXTERNAL-IP 长期 <pending>:说明没有控制器为它分配外部地址,多见于裸金属/自建集群或云控制器异常。

Kubernetes 速查云更新于 2026-10-13

Pending 是什么意思

LoadBalancer 类型的 Service 自己不产生外部地址:它把请求交给集群里的负载均衡控制器,由控制器向云平台或外部系统申请地址,成功后才写进 status.loadBalancer.ingress,kubectl 表里的 EXTERNAL-IP 才会有值。长期显示 <pending> 表示「还没有控制器为它分配地址」,属于等待状态而非故障状态,排查方向是找有没有可用的 LB 实现,而不是反复改 Service。

基本信息

适用对象type: LoadBalancer 的 Service
地址来源status.loadBalancer.ingress(由控制器写入)
执行者云厂商 cloud-controller-manager,或 MetalLB / OpenELB / kube-vip 等
前置条件控制器 Pod 正常、Service 有可用后端、配额与权限充足
替代入口NodePort(先验证服务本身是否正常)

典型使用场景

  • 云托管集群:控制器调用云 API 创建 CLB/SLB 并回填地址,Pending 说明云侧调用失败或凭据过期
  • 裸金属自建集群:未安装 MetalLB、OpenELB、kube-vip 一类实现时 Pending 是预期行为,需要按需引入或改用 NodePort
  • 混合环境:集群里同时存在多个 LB 控制器时可能互相抢管同一个 Service,表现为地址迟迟不回填
  • 排障时区分层次:先用 NodePort 访问确认 Pod 与 Service 端到端正常,再集中处理 LB 层
  • 变更前评估影响:删除重建 LoadBalancer Service 会释放并重新申请地址,公网 IP 可能改变

诊断顺序

诊断顺序
kubectl get svc web-lb -n prod                       # 先看 TYPE 与 EXTERNAL-IP 两列
kubectl describe svc web-lb -n prod | tail -20        # 事件里常有云侧配额、权限、子网相关原文
kubectl get pods -A | grep -i -E 'cloud-controller|metallb|openelb|kube-vip'   # 有没有 LB 控制器
kubectl get events -A --field-selector involvedObject.name=web-lb   # 按对象名过滤事件
kubectl get endpoints web-lb -n prod                 # 后端为空时先修后端,地址申请未必是根因

常见原因对照

现象可能的层下一步动作
EXTERNAL-IP 一直 pending,controller-manager 未运行集群缺少 LB 实现裸金属装 MetalLB/OpenELB,云上检查 cloud-controller-manager 副本与日志
有控制器但地址始终不回填控制器调用外部 API 失败看控制器日志中的鉴权、配额、子网、安全组报错
地址回填后访问不通外部入口或安全组检查云侧监听器、健康检查与安全组放行
外部端口丢弃部分流量externalTrafficPolicy 为 Local 且节点无后端扩容副本或改回 Cluster 策略
MetalLB 这类实现区分二层宣告与 BGP 宣告:用 BGP 模式时需要上游路由器配合宣告网段,配错时地址虽然回填,但外部网络完全到不了,表现为「有 IP 但访问超时」。
删除 LoadBalancer Service 会连带释放云侧负载均衡实例,重新创建会分配新的公网地址,依赖固定 IP 的 DNS 记录与备案需同步更新,属于有外部影响的操作。

易错点

  • 把 pending 当故障直接改 Service:先确认集群里有没有 LB 控制器,没有控制器时怎么改都不会回填
  • 只盯 Service 不看 Endpoints:后端为空时即使地址分配成功,流量也会全部打回 503 或超时
  • 裸金属集群装 MetalLB 后忘了给地址池划出与节点同网段且未被占用的范围,出现地址冲突导致全网抖动
  • 生产入口直接删除重建:公网 IP 变化会让已发布的 DNS 记录失效,切换期间业务中断

数据来源与参考

  • Kubernetes 官方文档 · Service(LoadBalancer)/ 云厂商负载均衡文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌