bpf-lb-sock-hostns-only only takes effect when bpf-lb-sock is true

15 阅读1分钟

明白了,你贴出的 cilium-values.yml 配置文件里,对 socket LB 的配置是这样的:

socketLB:
  enabled: false
  hostNamespaceOnly: true

这正对应你日志里看到的警告:

bpf-lb-sock-hostns-only only takes effect when bpf-lb-sock is true

原因分析:

  1. 你当前 socketLB 没开启 (enabled: false),对应 Cilium 配置 bpf-lb-sock=false)
  2. hostNamespaceOnly: true 只有在 bpf-lb-sock=true 时才生效
  3. 所以日志里给出 warn,提醒 hostNamespaceOnly 没有效果

✅ 解决方法

有两种方式:

方法 1:忽略这个警告(推荐)

  • 如果你 不打算使用 socket LB,保持 enabled: false 就可以
  • 警告不会影响 CNI chaining、Kube-OVN 或流量处理

方法 2:开启 socket LB 让 hostNamespaceOnly 生效

  • 修改配置:
socketLB:
  enabled: true
  hostNamespaceOnly: true
  • 或者等价地设置:
cilium config bpf-lb-sock=true
cilium config bpf-lb-sock-hostns-only=true
  • 然后重启 Cilium Pod,让配置生效

这样日志就不会再报 warn,并且 BPF Socket LB 会仅在 host namespace 生效


额外说明

  • 对于 Kube-OVN chaining 模式,很多场景下 socket LB 用不到,尤其是 VM 或 kubevirt 场景
  • 所以保持 enabled: false 是完全合理的
  • hostNamespaceOnly 只是一个增强选项,不开启 socket LB 时,它本身不会做任何事情

如果你愿意,我可以帮你改写一份 适用于 Kube-OVN chaining 的 cilium-values.yml,保证:

  • 不报 warn
  • 保持现有 chaining 配置
  • 保留必要的 BPF 和 SNAT 功能