我已经使用3个VM安装了K8S集群(1个主服务器,2个工作人员)。
VM1: Eth0: IPv4 4-A1,Eth1: IPv4 4-B1,IPv4 6-C1
VM1: Eth0: IPv6 4-A2,Eth1: IPv6 4-B2,IPv6 6-C2
VM1: Eth0: IPv6 4-A3,Eth1: IPv6 4-B3,IPv6 6-C3
我的K8S集群都是IPv4 - PodIp、serviceIP - everything Ipv4,运行良好。
我已经参考过https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example来部署示例应用程序,使用nginx通过入口公开它。
我能够使用Ipv4地址(A和B)到达服务。但是,我无法使用Ipv6访问该服务。
然后,我创建了一个NodePort服务来公开入口服务,现在我看到了以下工作节点。
netstat -anlp | grep -w LISTEN | grep 32407
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::32407 :::* LISTEN - 现在,当我尝试使用Ipv6访问该服务时,它只是超时。
当我试着用Wireshark看看发生了什么。
当IPv4用于搜索服务- TCP时,HTTP就会得到响应。
当IPv6被使用时- TCP被建立,即使TCP KeepAlive在curl等待时也被交换。但是,我看不到HTTP GET发送的响应。
不确定工作节点内发生了什么:-(我在wireshark中什么都没看到。)
Google中的一些搜索提示K8S使用Netfilter来使数据包到达正确的目的地。这难道不能用于IPv6数据包吗?
帮帮忙吧。
发布于 2019-05-28 14:19:07
根据官方的gcloud文档:
VPC网络只支持IPv4单播业务。它们不支持网络中的广播、多播或IPv6通信: VPC网络中的VMs只能发送到IPv4目的地,并且只能从IPv4源接收流量。可以为全局负载均衡器创建IPv6地址。
请阅读这篇关于ipv6 6支持和双堆栈配置的文章
蔚蓝的:
IPv6用于Azure虚拟网络目前正在公开预览。此预览是在没有服务级别协议的情况下提供的,不建议用于生产工作负载。您可以找到更多的信息,这里
浅谈ipv6对github的支持
除了支持ipv的集群之外,集群还应该有支持IPv4和IPv6的双堆栈实现,用于豆荚和服务。作为一个例子,请看一下这里和这里,这里是kubeadm-dind-簇
目前,亚马逊可能提供了最大的IPv6 6支持
https://serverfault.com/questions/969097
复制相似问题