明白了,你贴出的 cilium-values.yml 配置文件里,对 socket LB 的配置是这样的:
socketLB:
enabled: false
hostNamespaceOnly: true
这正对应你日志里看到的警告:
bpf-lb-sock-hostns-only only takes effect when bpf-lb-sock is true
原因分析:
- 你当前 socketLB 没开启 (
enabled: false),对应 Cilium 配置bpf-lb-sock=false) hostNamespaceOnly: true只有在bpf-lb-sock=true时才生效- 所以日志里给出 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 功能