mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-04 15:05:20 +00:00
fix bugs introduced by ipvs graceful termination
This commit is contained in:
@@ -82,9 +82,6 @@ func (q *graceTerminateRSList) remove(rs *listItem) bool {
|
||||
}
|
||||
|
||||
func (q *graceTerminateRSList) flushList(handler func(rsToDelete *listItem) (bool, error)) bool {
|
||||
q.lock.Lock()
|
||||
defer q.lock.Unlock()
|
||||
|
||||
success := true
|
||||
for name, rs := range q.list {
|
||||
deleted, err := handler(rs)
|
||||
@@ -105,8 +102,8 @@ func (q *graceTerminateRSList) exist(uniqueRS string) (*listItem, bool) {
|
||||
q.lock.Lock()
|
||||
defer q.lock.Unlock()
|
||||
|
||||
if _, ok := q.list[uniqueRS]; ok {
|
||||
return nil, false
|
||||
if rs, ok := q.list[uniqueRS]; ok {
|
||||
return rs, true
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
@@ -144,7 +141,7 @@ func (m *GracefulTerminationManager) GracefulDeleteRS(vs *utilipvs.VirtualServer
|
||||
}
|
||||
deleted, err := m.deleteRsFunc(ele)
|
||||
if err != nil {
|
||||
glog.Errorf("Delete rs %q err: %v", err)
|
||||
glog.Errorf("Delete rs %q err: %v", ele.String(), err)
|
||||
}
|
||||
if deleted {
|
||||
return nil
|
||||
@@ -178,7 +175,7 @@ func (m *GracefulTerminationManager) deleteRsFunc(rsToDelete *listItem) (bool, e
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
return false, fmt.Errorf("Failed to delete rs %q, can't find the real server", rsToDelete.String())
|
||||
return true, fmt.Errorf("Failed to delete rs %q, can't find the real server", rsToDelete.String())
|
||||
}
|
||||
|
||||
func (m *GracefulTerminationManager) tryDeleteRs() {
|
||||
|
||||
@@ -1533,7 +1533,7 @@ func (proxier *Proxier) syncEndpoint(svcPortName proxy.ServicePortName, onlyNode
|
||||
}
|
||||
|
||||
if curEndpoints.Has(ep) {
|
||||
// check if newEndpoint is in gracefulDelete list, is true, delete this ep immediately
|
||||
// check if newEndpoint is in gracefulDelete list, if true, delete this ep immediately
|
||||
uniqueRS := GetUniqueRSName(vs, newDest)
|
||||
if !proxier.gracefuldeleteManager.InTerminationList(uniqueRS) {
|
||||
continue
|
||||
@@ -1591,10 +1591,14 @@ func (proxier *Proxier) cleanLegacyService(activeServices map[string]bool, curre
|
||||
// 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
|
||||
rsList, err := proxier.ipvs.GetRealServers(svc)
|
||||
if len(rsList) != 0 && err == nil {
|
||||
glog.V(5).Infof("Will not delete VS: %v, cause it have RS: %v", svc, rsList)
|
||||
okayToDelete = false
|
||||
rsList, _ := proxier.ipvs.GetRealServers(svc)
|
||||
for _, rs := range rsList {
|
||||
uniqueRS := GetUniqueRSName(svc, rs)
|
||||
// if there are in terminating real server in this service, then handle it later
|
||||
if proxier.gracefuldeleteManager.InTerminationList(uniqueRS) {
|
||||
okayToDelete = false
|
||||
break
|
||||
}
|
||||
}
|
||||
for _, excludedCIDR := range proxier.excludeCIDRs {
|
||||
// Any validation of this CIDR already should have occurred.
|
||||
|
||||
Reference in New Issue
Block a user