我想在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。
calico配置。
[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,发现没有任何包进入到masqurade的右侧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
试了很多次,但都失败了,我是不是错过了什么?
问候
在集群上启用ipv6并不是你做的那么简单。仅仅在你的网络中配置ipv6是不能用Kubernetes的。
首先,也是最重要的话题是,在这个问题上 IPv4IPv6双栈 是一个alpha功能。作为任何alpha功能,它可能无法像预期的那样工作。
请通过 这个 文档,以便更好地理解使它在你的集群中工作的必要条件(你必须添加一个特征门)。
还有一些工作正在进行中,以使它能够引导一个 使用Kubeadm的双栈Kubernetes集群。但它还不能使用,也没有ETA。
有一些IPv6和双栈设置的例子,与其他网络插件在 本库.
这个项目有两个主要目的。(i)研究和验证kubernetes和相关插件中的ipv6支持 (ii)为实现和测试附加功能提供开发环境。 (如双栈)
我在安装类似的CentOS7时也遇到了同样的问题。
除了按照说明书上的 印花布网站 并确保所有节点都启用了ipv6转发功能,解决方案是设置环境变量。CALICO_IPV6POOL_NAT_OUTGOING
到 true
对于 install-cni
在 initContainers
以及 calico-node
在 containers
部分。
在我的情况下,我还必须设置 IP_AUTODETECTION_METHOD
到我的实际接口的公共v6 IP地址。
我还明确地在我的实际接口上添加了 --proxy-mode=iptables
到kube-proxy参数中(我不确定它是否是默认的)。
希望能帮到你。
谢谢你的意见,我发现根本原因是calico在创建路由后15秒左右自动删除了通往容器的路由,如下图:[2020-06-20T22:12:21.] ff00::8 dev caliad9673f27e9 table local metric. 292676] ff00::8 dev caliad9673f27e9 table local metric 256 pref medium[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 scope link[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] local fe80::cee:eeff:feee:eee dev lo table local proto unspec metric 0 pref medium[2020-06-20T22:12:23. 173376] local fe80::dev lo table local proto unspec metric 0 pref medium[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.comrojectcalicocalicoissues2876。