Choosing the right source VIP for local endpoints

This commit is contained in:
Sravanth Bangari 2020-11-11 23:29:07 -08:00
parent 082146a6e6
commit 6c68ca5a9e

View File

@ -1088,7 +1088,18 @@ func (proxier *Proxier) syncProxyRules() {
}
}
if proxier.network.networkType == "Overlay" {
// For Overlay networks 'SourceVIP' on an Load balancer Policy can either be chosen as
// a) Source VIP configured on kube-proxy (or)
// b) Node IP of the current node
//
// For L2Bridge network the Source VIP is always the NodeIP of the current node and the same
// would be configured on kube-proxy as SourceVIP
//
// The logic for choosing the SourceVIP in Overlay networks is based on the backend endpoints:
// a) Endpoints are any IP's outside the cluster ==> Choose NodeIP as the SourceVIP
// b) Endpoints are IP addresses of a remote node => Choose NodeIP as the SourceVIP
// c) Everything else (Local POD's, Remote POD's, Node IP of current node) ==> Choose the configured SourceVIP
if proxier.network.networkType == "Overlay" && !ep.GetIsLocal() {
providerAddress := proxier.network.findRemoteSubnetProviderAddress(ep.IP())
isNodeIP := (ep.IP() == providerAddress)