mirror of https://github.com/k3s-io/k3s
[kube-proxy/ipvs] Apply graceful termination when deleting a service
parent
338824d3a6
commit
81252e2ec1
|
@ -1605,7 +1605,7 @@ func (proxier *Proxier) syncEndpoint(svcPortName proxy.ServicePortName, onlyNode
|
||||||
klog.V(5).Infof("Using graceful delete to delete: %v", uniqueRS)
|
klog.V(5).Infof("Using graceful delete to delete: %v", uniqueRS)
|
||||||
err = proxier.gracefuldeleteManager.GracefulDeleteRS(appliedVirtualServer, delDest)
|
err = proxier.gracefuldeleteManager.GracefulDeleteRS(appliedVirtualServer, delDest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Failed to delete destination: %v, error: %v", delDest, err)
|
klog.Errorf("Failed to delete destination: %v, error: %v", uniqueRS, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1617,17 +1617,22 @@ func (proxier *Proxier) cleanLegacyService(activeServices map[string]bool, curre
|
||||||
svc := currentServices[cs]
|
svc := currentServices[cs]
|
||||||
if _, ok := activeServices[cs]; !ok {
|
if _, ok := activeServices[cs]; !ok {
|
||||||
// This service was not processed in the latest sync loop so before deleting it,
|
// This service was not processed in the latest sync loop so before deleting it,
|
||||||
// make sure it does not fall within an excluded CIDR range.
|
|
||||||
okayToDelete := true
|
okayToDelete := true
|
||||||
rsList, _ := proxier.ipvs.GetRealServers(svc)
|
rsList, _ := proxier.ipvs.GetRealServers(svc)
|
||||||
|
|
||||||
|
// If we still have real servers graceful termination is not done
|
||||||
|
if len(rsList) > 0 {
|
||||||
|
okayToDelete = false
|
||||||
|
}
|
||||||
|
// Applying graceful termination to all real servers
|
||||||
for _, rs := range rsList {
|
for _, rs := range rsList {
|
||||||
uniqueRS := GetUniqueRSName(svc, rs)
|
uniqueRS := GetUniqueRSName(svc, rs)
|
||||||
// if there are in terminating real server in this service, then handle it later
|
klog.V(5).Infof("Using graceful delete to delete: %v", uniqueRS)
|
||||||
if proxier.gracefuldeleteManager.InTerminationList(uniqueRS) {
|
if err := proxier.gracefuldeleteManager.GracefulDeleteRS(svc, rs); err != nil {
|
||||||
okayToDelete = false
|
klog.Errorf("Failed to delete destination: %v, error: %v", uniqueRS, err)
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// make sure it does not fall within an excluded CIDR range.
|
||||||
for _, excludedCIDR := range proxier.excludeCIDRs {
|
for _, excludedCIDR := range proxier.excludeCIDRs {
|
||||||
// Any validation of this CIDR already should have occurred.
|
// Any validation of this CIDR already should have occurred.
|
||||||
_, n, _ := net.ParseCIDR(excludedCIDR)
|
_, n, _ := net.ParseCIDR(excludedCIDR)
|
||||||
|
|
Loading…
Reference in New Issue