我有一个由一个主节点和3个工作节点组成的自管理Kubernetes集群。我在集群中使用群集网络接口法兰绒。
在我的所有机器上,我可以看到以下类型的内核消息:
Apr 12 04:22:24 worker-7 kernel: [278523.379954] iptables[6260]: segfault at 88 ip 00007f9e69fefe47 sp 00007ffee4dff356 error 4 in libnftnl.so.11.3.0[7f9e69feb000+16000]
Apr 12 04:22:24 worker-7 kernel: [278523.380094] Code: bf 88 00 00 00 48 8b 2f 48 39 df 74 13 4c 89 ee 41 ff d4 85 c0 78 0b 48 89 ef 48 8b 6d 00 eb e8 31 c0 5a 5b 5d 41 5c 41 5d c3 <48> 8b 87 88 00 00 00 48 81 c7 78 00 00 00 48 39 f8 74 0b 85 f6 74
Apr 12 05:59:10 worker-7 kernel: [284329.182667] iptables[13978]: segfault at 88 ip 00007fb799fafe47 sp 00007fff22419b36 error 4 in libnftnl.so.11.3.0[7fb799fab000+16000]
Apr 12 05:59:10 worker-7 kernel: [284329.182774] Code: bf 88 00 00 00 48 8b 2f 48 39 df 74 13 4c 89 ee 41 ff d4 85 c0 78 0b 48 89 ef 48 8b 6d 00 eb e8 31 c0 5a 5b 5d 41 5c 41 5d c3 <48> 8b 87 88 00 00 00 48 81 c7 98 00 00 00 48 39 f8 74 0b 85 f6 74
Apr 12 08:29:25 worker-7 kernel: [293343.999073] iptables[16041]: segfault at 88 ip 00007fa40c7f7e47 sp 00007ffe04ba9886 error 4 in libnftnl.so.11.3.0[7fa40c7f3000+16000]
Apr 12 08:29:25 worker-7 kernel: [293343.999165] Code: bf 88 00 00 00 48 8b 2f 48 39 df 74 13 4c 89 ee 41 ff d4 85 c0 78 0b 48 89 ef 48 8b 6d 00 eb e8 31 c0 5a 5b 5d 41 5c 41 5d c3 <48> 8b 87 88 00 00 00 48 81 c7 98 00 00 00 48 39 f8 74 0b 85 f6 74我缩小了范围,认为信息来源于库贝法兰绒-ds舱。我有这样的日志信息:
Failed to ensure iptables rules: Error checking rule existence: failed to check rule existence: running [/sbin/iptables -t filter -C FORWARD -s 10.244.0.0/16 -j ACCEPT --wait]: exit status -1:
Failed to ensure iptables rules: Error checking rule existence: failed to check rule existence: running [/sbin/iptables -t nat -C POS TROUTING -s 10.244.0.0/16 ! -d 224.0.0.0/4 -j MASQUERADE --random-fully --wait]: exit status -1: 有人能解释一下这类信息的含义吗?这会是硬件问题吗?从法兰绒切换到另一个库伯伦集装箱网络接口(如卡利科 )是否有意义?
发布于 2021-04-12 09:36:14
正如评论中已经提到的,debian使用了nftable,而不是iptable:
不幸的是,在这个时刻,nftable和kubernetes是不兼容。
在Linux中,nftable可以作为内核iptables子系统的现代替代品。iptables工具可以充当兼容层,它的行为类似于iptable,但实际上是配置nftable。这个nftable后端与当前的kubeadm包不兼容:它会导致重复的防火墙规则并破坏kube-proxy。您可以尝试切换到像描述的这里那样的遗留选项,但是我不确定这个解决方案,因为我没有办法用您的Os测试它。我用这个这里解决了debian的类似问题。
另一种方法是切换到Calico,它实际上是带有支持nftbacked的FELIX_IPTABLESBACKEND。此参数控制iptables二进制Felix使用的变体。将其设置为Auto,以便自动检测后端。如果需要特定的后端,那么使用netfilter后端对主机使用NFT,对其他人使用Legacy。默认值:Auto。
在用容器安装棉布时,也请看一看这机箱。
https://stackoverflow.com/questions/67053959
复制相似问题