mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
Merge pull request #71515 from DataDog/lbernail/udp-graceful
Enable graceful termination for UDP flows when using kube-proxy in IPVS mode
This commit is contained in:
commit
25c9ac6544
@ -75,10 +75,10 @@ func (q *graceTerminateRSList) remove(rs *listItem) bool {
|
|||||||
|
|
||||||
uniqueRS := rs.String()
|
uniqueRS := rs.String()
|
||||||
if _, ok := q.list[uniqueRS]; ok {
|
if _, ok := q.list[uniqueRS]; ok {
|
||||||
return false
|
delete(q.list, uniqueRS)
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
delete(q.list, uniqueRS)
|
return false
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *graceTerminateRSList) flushList(handler func(rsToDelete *listItem) (bool, error)) bool {
|
func (q *graceTerminateRSList) flushList(handler func(rsToDelete *listItem) (bool, error)) bool {
|
||||||
@ -164,7 +164,10 @@ func (m *GracefulTerminationManager) deleteRsFunc(rsToDelete *listItem) (bool, e
|
|||||||
}
|
}
|
||||||
for _, rs := range rss {
|
for _, rs := range rss {
|
||||||
if rsToDelete.RealServer.Equal(rs) {
|
if rsToDelete.RealServer.Equal(rs) {
|
||||||
if rs.ActiveConn != 0 {
|
// Delete RS with no connections
|
||||||
|
// For UDP, ActiveConn is always 0
|
||||||
|
// For TCP, InactiveConn are connections not in ESTABLISHED state
|
||||||
|
if rs.ActiveConn+rs.InactiveConn != 0 {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
klog.Infof("Deleting rs: %s", rsToDelete.String())
|
klog.Infof("Deleting rs: %s", rsToDelete.String())
|
||||||
|
@ -1602,7 +1602,7 @@ func (proxier *Proxier) syncEndpoint(svcPortName proxy.ServicePortName, onlyNode
|
|||||||
Port: uint16(portNum),
|
Port: uint16(portNum),
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.V(5).Infof("Using graceful delete to delete: %v", delDest)
|
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", delDest, err)
|
||||||
|
Loading…
Reference in New Issue
Block a user