K3s metalLB 配置后 LoadBalancer 类型 svc 一直是 Pending

发布时间 - 2026-01-20 00:00:00    点击率:
K3s + MetalLB 中 LoadBalancer Service 长期 Pending 的主因是 K3s 默认禁用 servicelb 组件,导致 MetalLB 无法识别并处理 Service;需启用 servicelb、验证 MetalLB Controller 权限与运行状态、检查 IP 池配置及网络连通性,并确认 Service 符合处理条件。

LoadBalancer 类型的 Service 在 K3s + MetalLB 环境中长期处于 Pending 状态,通常不是 MetalLB 没装好,而是关键环节没对上——Service 没被 MetalLB 控制器识别为可处理对象。最常见原因是 K3s 默认禁用了 `service-load-balancer` 组件,而 MetalLB 依赖它来接管 LoadBalancer 类型 Service 的 IP 分配逻辑。

确认 K3s 是否启用了 service-load-balancer

K3s 从 v1.21+ 开始默认关闭内置负载均衡器(即 `--disable servicelb`),这是为了兼容外部方案如 MetalLB。但如果你没显式启用它,MetalLB 就“收不到活”——它只监听由 `servicelb` 控制器标记过的 Service(通过 `k3s.io/lb-controller: servicelb` 注解)。

  • 检查 K3s 启动参数:运行 ps aux | grep k3s,确认没有 --disable servicelb;如果有,需移除并重启 K3s
  • 或在启动时显式启用:k3s server --disable traefik --disable servicelb=false(注意 false 表示不禁用)
  • 验证是否生效:执行 kubectl get pods -n kube-system | grep servicelb,应看到 svclb-* 类似 Pod 运行中

检查 MetalLB Controller 是否正常运行且有权限

MetalLB Controller 需要 RBAC 权限去 patch Service 对象、打注解、分配 IP,并监听 Endpoints/EndpointSlices。若权限缺失或 Pod 崩溃,Servi

ce 就卡在 Pending。

  • 运行 kubectl get pods -n metallb-system,确保 controller-* Pod 是 Running 状态,且无 CrashLoopBackOff
  • 查看日志:kubectl logs -n metallb-system deploy/controller,重点找 failed to update serviceno available IPs 或 RBAC 相关错误
  • 确认 ClusterRoleBinding 已绑定到 controller ServiceAccount:MetalLB 官方 manifest 中已包含,但若手动修改过,需核对 metallb-system:controller 是否拥有 services/statusservices/finalizers 权限

验证 IP 地址池配置与节点网络连通性

MetalLB 分配 IP 前,必须从定义的地址池中选出一个可用地址,并确保该地址能被集群外客户端路由到——这要求地址池网段和 K3s 节点所在网络互通,且不与现有 DHCP 或网关冲突。

  • 检查 IPAddressPool 是否存在且 spec.addresses 格式正确(如 192.168.1.200-192.168.1.250192.168.1.200/28
  • 确认 L2Advertisement 已创建(用于 ARP/NDP 广播),且 spec.namespace 与 IP 池一致
  • 在任意节点上执行 ip a | grep "inet " | grep -E "(192\.168\.1|你的网段)",确保地址池不在节点已有接口 IP 范围内,避免冲突
  • 从局域网另一台机器 ping 地址池中的某个 IP(如 192.168.1.201),应不通(说明未被占用);启用 LB Service 后,再 ping 应能通(ARP 响应生效)

排查 Service 本身是否符合 MetalLB 处理条件

并非所有 LoadBalancer Service 都会被 MetalLB 处理。它会跳过以下情况:

  • Service 的 spec.loadBalancerIP 被指定,但该 IP 不在任一 IPAddressPool 中
  • Service 所在命名空间被 metallb.universe.tf/allow-namespace 注解限制,而当前命名空间未被允许(v0.14+ 默认不限制,但若配置了该注解需检查)
  • Service 的 spec.typeLoadBalancer,但 spec.externalTrafficPolicy 设为 Cluster 时,在某些旧版本 MetalLB 中可能触发调度异常(建议先设为 Local 测试)
  • Service 没有关联任何就绪的 Endpoint(即后端 Pod 未 Ready 或 selector 不匹配),MetalLB 会暂缓分配(但状态仍为 Pending,而非拒绝)


# ipad  # 后端  # ai  # 路由  # trae  # 命名空间  # 接口  # Namespace  # 对象  # 负载均衡  # 设为  # 均衡器  # 未被  # 池中  # 连通性  # 这是  # 已有  # 你没  # 而非  # 重启 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  如何在云指建站中生成FTP站点?  Android仿QQ列表左滑删除操作  如何用美橙互联一键搭建多站合一网站?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  如何快速生成高效建站系统源代码?  如何在橙子建站中快速调整背景颜色?  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  香港服务器租用费用高吗?如何避免常见误区?  黑客入侵网站服务器的常见手法有哪些?  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  如何用y主机助手快速搭建网站?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  如何实现建站之星域名转发设置?  JavaScript中的标签模板是什么_它如何扩展字符串功能  在centOS 7安装mysql 5.7的详细教程  如何挑选优质建站一级代理提升网站排名?  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  如何在腾讯云免费申请建站?  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  javascript基于原型链的继承及call和apply函数用法分析  WEB开发之注册页面验证码倒计时代码的实现  Laravel如何使用Sanctum进行API认证?(SPA实战)  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  微信小程序 配置文件详细介绍  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  清除minerd进程的简单方法  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  如何快速生成橙子建站落地页链接?  如何获取免费开源的自助建站系统源码?  深圳网站制作的公司有哪些,dido官方网站?  浅述节点的创建及常见功能的实现  怎么用AI帮你设计一套个性化的手机App图标?  如何确认建站备案号应放置的具体位置?  高防服务器租用首荐平台,企业级优惠套餐快速部署  nodejs redis 发布订阅机制封装实现方法及实例代码  如何在建站之星网店版论坛获取技术支持?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Android Socket接口实现即时通讯实例代码  手机网站制作与建设方案,手机网站如何建设?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?