Merge pull request #96499 from sbangari/overlaysourcevip

Choosing the right source VIP for local endpoints
This commit is contained in:
Kubernetes Prow Robot 2020-11-12 13:17:36 -08:00 committed by GitHub
commit 6d5cb36d36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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)