I have installed K8S Cluster using 3 VMs (1 Master, 2 Workers).
VM1: Eth0: IPv4-A1, Eth1: IPv4-B1, IPv6-C1
VM1: Eth0: IPv4-A2, Eth1: IPv4-B2, IPv6-C2
VM1: Eth0: IPv4-A3, Eth1: IPv4-B3, IPv6-C3
My K8S Cluster is all IPv4 - PodIp, serviceIP - everything Ipv4 and works fine.
I have referred to https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example for deploying example application exposing it through ingress using nginx.
I'm able to reach the service using Ipv4 address (both A and B). But, I'm not able to reach the service using Ipv6.
I have then created a NodePort service to expose the ingress service and now I see the following worker nodes.
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 -
Now - when I try to reach the service using Ipv6 - it just times out.
When I try to see what's happening using Wireshark.
When IPv4 is used to search service - TCP, then HTTP GET and we get response.
When IPv6 is used - TCP is established, even TCP KeepAlive is exchanged while curl is waiting.. But, I don't see response for my HTTP GET sent.
Not sure what's happening within the worker node :-( I don't see anything in wireshark.
Bit of searching in Google gave some hint that K8S uses Netfilter to make packets reach the correct destination. Is that not capable of doing it for IPv6 packets?