mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Merge pull request #114181 from danwinship/minimize-iptables-ensure-rule
Don't re-run EnsureChain/EnsureRules on partial syncs
This commit is contained in:
commit
7f1b8a33a8
@ -863,7 +863,18 @@ func (proxier *Proxier) syncProxyRules() {
|
||||
}
|
||||
}()
|
||||
|
||||
// Create and link the kube chains.
|
||||
if !tryPartialSync {
|
||||
// Ensure that our jump rules (eg from PREROUTING to KUBE-SERVICES) exist.
|
||||
// We can't do this as part of the iptables-restore because we don't want
|
||||
// to specify/replace *all* of the rules in PREROUTING, etc.
|
||||
//
|
||||
// We need to create these rules when kube-proxy first starts, and we need
|
||||
// to recreate them if the utiliptables Monitor detects that iptables has
|
||||
// been flushed. In both of those cases, the code will force a full sync.
|
||||
// In all other cases, it ought to be safe to assume that the rules
|
||||
// already exist, so we'll skip this step when doing a partial sync, to
|
||||
// save us from having to invoke /sbin/iptables 20 times on each sync
|
||||
// (which will be very slow on hosts with lots of iptables rules).
|
||||
for _, jump := range iptablesJumpChains {
|
||||
if _, err := proxier.iptables.EnsureChain(jump.table, jump.dstChain); err != nil {
|
||||
klog.ErrorS(err, "Failed to ensure chain exists", "table", jump.table, "chain", jump.dstChain)
|
||||
@ -878,6 +889,7 @@ func (proxier *Proxier) syncProxyRules() {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Below this point we will not return until we try to write the iptables rules.
|
||||
|
Loading…
Reference in New Issue
Block a user