我正在尝试在k8s环境中测试ipv6连接,并安装了calico网络插件;问题是容器无法ping通ipv6网关或群集节点的其他地址,k8s和calico的版本是v1.18.2和calico v1.12(也尝试过v1.13);的配置如下:
centos7,内核为4.4(升级)
开启ipv6转发
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.forwarding = 1
印花布配置:
[root@k8s-master-01 ~]# calicoctl get ipp -owide
NAME CIDR NAT IPIPMODE VXLANMODE DISABLED SELECTOR
default-ipv4-ippool 10.244.0.0/16 true Never Never false all()
default-ipv6-ippool fc00:f00::/24 true Never Never false all()
within the pod, can see ipv6 address is allocated
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1440
inet 10.244.36.196 netmask 255.255.255.255 broadcast 0.0.0.0
inet6 fe80::a8c6:c1ff:fe61:258c prefixlen 64 scopeid 0x20<link>
inet6 fc00:fd8:4bce:9a48:4ab7:a333:5ec8:c684 prefixlen 128 scopeid 0x0<global>
ether aa:c6:c1:61:25:8c txqueuelen 0 (Ethernet)
RX packets 23026 bytes 3522721 (3.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 24249 bytes 3598501 (3.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@k8s-worker-01 ~]# ip -6 route show
fc00:fd8:4bce:9a48:4ab7:a333:5ec8:c684 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via fe80::ecee:eeff:feee:eeee dev eth0 metric 1024 pref medium
实际上,我从主机捕获了带有tcpdump的消息,可以看到一些icmp请求进入了cali66e9f9aafee之类的接口,但是看起来没有进一步的处理,我检查了ip6tables,发现没有任何软件包进入正确的CHAIN链中。假面舞会
[root@k8s-worker-01 ~]# ip6tables -t nat -vnL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1 80 cali-PREROUTING all * * ::/0 ::/0 /* cali:6gwbT8clXdHdC1b1 */
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 791 packets, 63280 bytes)
pkts bytes target prot opt in out source destination
796 63680 cali-OUTPUT all * * ::/0 ::/0 /* cali:tVnHkvAo15HuiPy0 */
Chain POSTROUTING (policy ACCEPT 791 packets, 63280 bytes)
pkts bytes target prot opt in out source destination
796 63680 cali-POSTROUTING all * * ::/0 ::/0 /* cali:O3lYWMrLQYEMJtB5 */
Chain cali-OUTPUT (1 references)
pkts bytes target prot opt in out source destination
796 63680 cali-fip-dnat all * * ::/0 ::/0 /* cali:GBTAv2p5CwevEyJm */
Chain cali-POSTROUTING (1 references)
pkts bytes target prot opt in out source destination
796 63680 cali-fip-snat all * * ::/0 ::/0 /* cali:Z-c7XtVd2Bq7s_hA */
796 63680 cali-nat-outgoing all * * ::/0 ::/0 /* cali:nYKhEzDlr11Jccal */
Chain cali-PREROUTING (1 references)
pkts bytes target prot opt in out source destination
1 80 cali-fip-dnat all * * ::/0 ::/0 /* cali:r6XmIziWUJsdOK6Z */
Chain cali-fip-dnat (2 references)
pkts bytes target prot opt in out source destination
Chain cali-fip-snat (1 references)
pkts bytes target prot opt in out source destination
Chain cali-nat-outgoing (1 references)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all * * ::/0 ::/0 /* cali:Ir_z2t1P6-CxTDof */ match-set cali60masq-ipam-pools src ! match-set cali60all-ipam-pools dst
尝试了很多次,但是失败了,我错过了什么吗?
致谢
答案 0 :(得分:0)
在群集上启用ipv6并不像您那样简单。仅在网络中配置ipv6不能与Kubernetes一起使用。
此主题中的第一个也是最重要的主题是IPv4/IPv6 dual-stack是Alpha功能。作为任何Alpha功能,它可能无法按预期工作。
请仔细阅读this文档,以更好地了解使其在群集中运行的必要条件(必须添加功能门)。
还需要做一些工作来引导Kubernetes cluster with Dual Stack using Kubeadm,但是它尚不可用,因此也没有ETA。
this repository中有一些IPv6和双栈设置以及其他网络插件的示例。
该项目有两个主要目的:(i)研究和验证kubernetes及其关联插件中的ipv6支持(ii)提供用于实现和测试其他功能的开发环境(常规堆栈) < / p>
答案 1 :(得分:0)
我在使用类似的CentOS7设置时遇到了完全相同的问题。
除了遵循calico website上的说明并确保所有节点都已启用ipv6转发外,解决方案还为以下环境中的CALICO_IPV6POOL_NAT_OUTGOING
将环境变量true
设置为install-cni
: initContainers
部分和calico-node
部分中的containers
。
就我而言,我还必须将IP_AUTODETECTION_METHOD
设置为具有公共v6 IP地址的实际接口。
我还向kube-proxy参数中明确添加了--proxy-mode=iptables
(我不确定它是否是默认值)。
我希望这会有所帮助。
答案 2 :(得分:0)
感谢您的评论,我发现根本原因是因为calico在创建路由大约15秒后立即自动删除了到容器的路由,如下所示: [2020-06-20T22:12:21.292676] ff00 :: / 8 dev caliad9673f27e9表本地指标256个首选项媒体 [2020-06-20T22:12:21.292723] fe80 :: / 64 dev caliad9673f27e9 proto kernel metric 256 pref medium [2020-06-20T22:12:21.292736] 10.244.36.212 dev caliad9673f27e9范围链接 [2020-06-20T22:12:21.292746] fc00:f00:0:24fe:200:8fa7:f4c7:af14 dev caliad9673f27e9 metric 1024 pref medium [2020-06-20T22:12:23.173297]本地fe80 :: ecee:eeff:feee:eeee开发表本地proto unspec指标0优先中 [2020-06-20T22:12:23.173376]本地fe80 :: dev lo table本地proto unspec度量0首选项中等 [2020-06-20T22:12:31.734619]删除了fc00:f00:0:24fe:200:8fa7:f4c7:af14 dev caliad9673f27e9 metric 1024 pref medium
并且在github中有一个问题报告,他们在calico 3.9版本中找到了它,而我在3.13.4中进行了尝试,结果相同。 https://github.com/projectcalico/calico/issues/2876