diff --git a/pkg/proxy/userspace/proxier.go b/pkg/proxy/userspace/proxier.go index 5032577b81f..5224d45d4b8 100644 --- a/pkg/proxy/userspace/proxier.go +++ b/pkg/proxy/userspace/proxier.go @@ -166,9 +166,15 @@ func NewCustomProxier(loadBalancer LoadBalancer, listenIP net.IP, iptables iptab return nil, ErrProxyOnLocalhost } - hostIP, err := utilnet.ChooseHostInterface() - if err != nil { - return nil, fmt.Errorf("failed to select a host interface: %v", err) + // If listenIP is given, assume that is the intended host IP. Otherwise + // try to find a suitable host IP address from network interfaces. + var err error + hostIP := listenIP + if hostIP.Equal(net.IPv4zero) { + hostIP, err = utilnet.ChooseHostInterface() + if err != nil { + return nil, fmt.Errorf("failed to select a host interface: %v", err) + } } err = setRLimit(64 * 1000)