首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在k8s/calico环境下,带有ipv6地址的容器无法连接到外部

在k8s/calico环境下,带有ipv6地址的容器无法连接到外部
EN

Stack Overflow用户
提问于 2020-05-12 22:48:19
回答 3查看 847关注 0票数 1

我尝试在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配置:

代码语言:javascript
运行
复制
[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请求进入了like cali66e9f9aafee接口,但看起来没有进一步的处理,我检查了ip6tables,看到没有任何包进入正确的masqurade链

代码语言:javascript
运行
复制
[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

尝试了很多次,但都失败了,我是不是遗漏了什么?

问候

EN

回答 3

Stack Overflow用户

发布于 2020-05-18 15:16:19

在集群上启用ipv6并不像您所做的那样简单。仅仅在您的网络中配置ipv6是不会与Kubernetes一起工作的。

这件事的第一个也是最重要的话题是,IPv4/IPv6 dual-stack是一个alpha特性。作为任何alpha功能,它可能不会像预期的那样工作。

请阅读this文档以更好地了解使其在您的集群中工作的必要条件(您必须添加一个功能门)。

还有一些工作正在做,以使引导Kubernetes cluster with Dual Stack using Kubeadm成为可能,但它还不能使用,也没有用于它的预计时间。

this repository中有一些IPv6和双协议栈设置与其他网络插件的示例。

此项目有两个主要目的:(i)研究和验证kubernetes和相关插件中的ipv6支持(ii)为实现和测试其他功能提供开发环境(e.g.dual-stack)

票数 0
EN

Stack Overflow用户

发布于 2020-05-28 23:11:08

我在一个类似的CentOS7设置中也遇到了同样的问题。

除了遵循calico website上的说明并确保所有节点都启用了ipv6转发之外,解决方案还将环境变量CALICO_IPV6POOL_NAT_OUTGOING设置为true,分别用于initContainers部分中的install-cnicontainers部分中的calico-node

在我的例子中,我还必须使用公共v6 IP地址将IP_AUTODETECTION_METHOD设置为我的实际接口。

我还显式地将--proxy-mode=iptables添加到kube-proxy参数中(我不确定它是否是默认的)。

我希望这能帮到你。

票数 0
EN

Stack Overflow用户

发布于 2020-06-20 22:19:00

感谢您的评论,我发现根本原因是calico在创建路由后15秒左右自动删除了到容器的路由。如下所示: 2020-06-20T22:12:21.292676 ff00::/8开发caliad9673f27e9表本地指标256首选介质2020-06-20T22:12:21.292723 fe80::/64开发caliad9673f27e9 proto内核指标256首选介质2020-06-20T22:12:21.292736 10.244.36.212开发caliad9673f27e9范围链接2020-06-20T22:12:21.292746 fc00:f00:0:24fe:200:8fa7:f4c7:af14开发caliad9673f27e9指标1024首选介质2020-06-20T22:12:23.173297本地fe80:ecee:eeff:feee:eeee dev lo table local proto unspec指标0首选medium 2020-06-20T22:12:23.173376本地fe80::dev lo table local proto unspec指标0首选medium 2020-06-20T22:12:31.734619已删除fc00:f00:0:24fe:200:8fa7:f4c7:af14 dev caliad9673f27e9指标1024首选medium

在github中有一个问题报告,他们在calico 3.9版本中发现了它,而我在3.13.4中尝试了它,结果是相同的。https://github.com/projectcalico/calico/issues/2876

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61754782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档