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.