k8s loadbalancer service with externalTrafficPolicy=local passes through client ip on IPv4, hides it on IPv6
Solution 1:
It turns out that I had an old installation of ip-masq-agent
running, which was configured to erroneously do natting of IPv6 traffic both in and out of the cluster. I figured this out by looking at the ip6tables
rules and seeing a bunch of MASQUERADE
rules that had been populated by ip-masq-agent
.
Removing this deployment from the cluster and rebooting the nodes to remove the ip6tables
rules solved the problem.