diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 362acbf173f..de0b0a648e2 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -975,7 +975,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS MinDomainsInPodTopologySpread: {Default: true, PreRelease: featuregate.Beta}, - MinimizeIPTablesRestore: {Default: true, PreRelease: featuregate.Beta}, + MinimizeIPTablesRestore: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.30 MultiCIDRRangeAllocator: {Default: false, PreRelease: featuregate.Alpha}, diff --git a/pkg/proxy/iptables/proxier.go b/pkg/proxy/iptables/proxier.go index 69bd034e9bf..68f259c0e6a 100644 --- a/pkg/proxy/iptables/proxier.go +++ b/pkg/proxy/iptables/proxier.go @@ -38,11 +38,9 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/tools/events" utilsysctl "k8s.io/component-helpers/node/util/sysctl" "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/proxy" "k8s.io/kubernetes/pkg/proxy/conntrack" "k8s.io/kubernetes/pkg/proxy/healthcheck" @@ -779,7 +777,9 @@ func (proxier *Proxier) syncProxyRules() { return } - tryPartialSync := !proxier.needFullSync && utilfeature.DefaultFeatureGate.Enabled(features.MinimizeIPTablesRestore) + // The value of proxier.needFullSync may change before the defer funcs run, so + // we need to keep track of whether it was set at the *start* of the sync. + tryPartialSync := !proxier.needFullSync // Keep track of how long syncs take. start := time.Now() diff --git a/pkg/proxy/iptables/proxier_test.go b/pkg/proxy/iptables/proxier_test.go index 4a52e60e54b..328edf8efba 100644 --- a/pkg/proxy/iptables/proxier_test.go +++ b/pkg/proxy/iptables/proxier_test.go @@ -38,11 +38,8 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/sets" - utilfeature "k8s.io/apiserver/pkg/util/feature" - featuregatetesting "k8s.io/component-base/featuregate/testing" "k8s.io/component-base/metrics/testutil" "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/proxy" "k8s.io/kubernetes/pkg/proxy/conntrack" "k8s.io/kubernetes/pkg/proxy/metrics" @@ -7420,8 +7417,6 @@ func countEndpointsAndComments(iptablesData string, matchEndpoint string) (strin } func TestSyncProxyRulesLargeClusterMode(t *testing.T) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.MinimizeIPTablesRestore, true)() - ipt := iptablestest.NewFake() fp := NewFakeProxier(ipt) fp.masqueradeAll = true @@ -7609,8 +7604,6 @@ func TestSyncProxyRulesLargeClusterMode(t *testing.T) { // Test calling syncProxyRules() multiple times with various changes func TestSyncProxyRulesRepeated(t *testing.T) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.MinimizeIPTablesRestore, true)() - ipt := iptablestest.NewFake() fp := NewFakeProxier(ipt) metrics.RegisterMetrics() diff --git a/pkg/proxy/metrics/metrics.go b/pkg/proxy/metrics/metrics.go index 5f36ec26bfd..b725584c8e7 100644 --- a/pkg/proxy/metrics/metrics.go +++ b/pkg/proxy/metrics/metrics.go @@ -27,9 +27,8 @@ import ( const kubeProxySubsystem = "kubeproxy" var ( - // SyncProxyRulesLatency is the latency of one round of kube-proxy syncing proxy rules. - // (With the iptables proxy, if MinimizeIPTablesRestore is enabled, this includes both - // full and partial syncs.) + // SyncProxyRulesLatency is the latency of one round of kube-proxy syncing proxy + // rules. (With the iptables proxy, this includes both full and partial syncs.) SyncProxyRulesLatency = metrics.NewHistogram( &metrics.HistogramOpts{ Subsystem: kubeProxySubsystem, @@ -40,8 +39,7 @@ var ( }, ) - // SyncFullProxyRulesLatency is the latency of one round of full rule syncing, when - // MinimizeIPTablesRestore is enabled. + // SyncFullProxyRulesLatency is the latency of one round of full rule syncing. SyncFullProxyRulesLatency = metrics.NewHistogram( &metrics.HistogramOpts{ Subsystem: kubeProxySubsystem, @@ -52,8 +50,7 @@ var ( }, ) - // SyncPartialProxyRulesLatency is the latency of one round of partial rule syncing, when - // MinimizeIPTablesRestore is enabled. + // SyncPartialProxyRulesLatency is the latency of one round of partial rule syncing. SyncPartialProxyRulesLatency = metrics.NewHistogram( &metrics.HistogramOpts{ Subsystem: kubeProxySubsystem,