mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 12:18:16 +00:00 
			
		
		
		
	Add new partial/full sync time metrics for iptables kube-proxy
This commit is contained in:
		@@ -779,14 +779,20 @@ func (proxier *Proxier) syncProxyRules() {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tryPartialSync := !proxier.needFullSync && utilfeature.DefaultFeatureGate.Enabled(features.MinimizeIPTablesRestore)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Keep track of how long syncs take.
 | 
						// Keep track of how long syncs take.
 | 
				
			||||||
	start := time.Now()
 | 
						start := time.Now()
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
		metrics.SyncProxyRulesLatency.Observe(metrics.SinceInSeconds(start))
 | 
							metrics.SyncProxyRulesLatency.Observe(metrics.SinceInSeconds(start))
 | 
				
			||||||
 | 
							if tryPartialSync {
 | 
				
			||||||
 | 
								metrics.SyncPartialProxyRulesLatency.Observe(metrics.SinceInSeconds(start))
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								metrics.SyncFullProxyRulesLatency.Observe(metrics.SinceInSeconds(start))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		klog.V(2).InfoS("SyncProxyRules complete", "elapsed", time.Since(start))
 | 
							klog.V(2).InfoS("SyncProxyRules complete", "elapsed", time.Since(start))
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tryPartialSync := !proxier.needFullSync && utilfeature.DefaultFeatureGate.Enabled(features.MinimizeIPTablesRestore)
 | 
					 | 
				
			||||||
	var serviceChanged, endpointsChanged sets.Set[string]
 | 
						var serviceChanged, endpointsChanged sets.Set[string]
 | 
				
			||||||
	if tryPartialSync {
 | 
						if tryPartialSync {
 | 
				
			||||||
		serviceChanged = proxier.serviceChanges.PendingChanges()
 | 
							serviceChanged = proxier.serviceChanges.PendingChanges()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,8 @@ const kubeProxySubsystem = "kubeproxy"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// SyncProxyRulesLatency is the latency of one round of kube-proxy syncing proxy rules.
 | 
						// 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 = metrics.NewHistogram(
 | 
						SyncProxyRulesLatency = metrics.NewHistogram(
 | 
				
			||||||
		&metrics.HistogramOpts{
 | 
							&metrics.HistogramOpts{
 | 
				
			||||||
			Subsystem:      kubeProxySubsystem,
 | 
								Subsystem:      kubeProxySubsystem,
 | 
				
			||||||
@@ -38,6 +40,30 @@ var (
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// SyncFullProxyRulesLatency is the latency of one round of full rule syncing, when
 | 
				
			||||||
 | 
						// MinimizeIPTablesRestore is enabled.
 | 
				
			||||||
 | 
						SyncFullProxyRulesLatency = metrics.NewHistogram(
 | 
				
			||||||
 | 
							&metrics.HistogramOpts{
 | 
				
			||||||
 | 
								Subsystem:      kubeProxySubsystem,
 | 
				
			||||||
 | 
								Name:           "sync_full_proxy_rules_duration_seconds",
 | 
				
			||||||
 | 
								Help:           "SyncProxyRules latency in seconds for full resyncs",
 | 
				
			||||||
 | 
								Buckets:        metrics.ExponentialBuckets(0.001, 2, 15),
 | 
				
			||||||
 | 
								StabilityLevel: metrics.ALPHA,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// SyncPartialProxyRulesLatency is the latency of one round of partial rule syncing, when
 | 
				
			||||||
 | 
						// MinimizeIPTablesRestore is enabled.
 | 
				
			||||||
 | 
						SyncPartialProxyRulesLatency = metrics.NewHistogram(
 | 
				
			||||||
 | 
							&metrics.HistogramOpts{
 | 
				
			||||||
 | 
								Subsystem:      kubeProxySubsystem,
 | 
				
			||||||
 | 
								Name:           "sync_partial_proxy_rules_duration_seconds",
 | 
				
			||||||
 | 
								Help:           "SyncProxyRules latency in seconds for partial resyncs",
 | 
				
			||||||
 | 
								Buckets:        metrics.ExponentialBuckets(0.001, 2, 15),
 | 
				
			||||||
 | 
								StabilityLevel: metrics.ALPHA,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// SyncProxyRulesLastTimestamp is the timestamp proxy rules were last
 | 
						// SyncProxyRulesLastTimestamp is the timestamp proxy rules were last
 | 
				
			||||||
	// successfully synced.
 | 
						// successfully synced.
 | 
				
			||||||
	SyncProxyRulesLastTimestamp = metrics.NewGauge(
 | 
						SyncProxyRulesLastTimestamp = metrics.NewGauge(
 | 
				
			||||||
@@ -180,6 +206,8 @@ var registerMetricsOnce sync.Once
 | 
				
			|||||||
func RegisterMetrics() {
 | 
					func RegisterMetrics() {
 | 
				
			||||||
	registerMetricsOnce.Do(func() {
 | 
						registerMetricsOnce.Do(func() {
 | 
				
			||||||
		legacyregistry.MustRegister(SyncProxyRulesLatency)
 | 
							legacyregistry.MustRegister(SyncProxyRulesLatency)
 | 
				
			||||||
 | 
							legacyregistry.MustRegister(SyncFullProxyRulesLatency)
 | 
				
			||||||
 | 
							legacyregistry.MustRegister(SyncPartialProxyRulesLatency)
 | 
				
			||||||
		legacyregistry.MustRegister(SyncProxyRulesLastTimestamp)
 | 
							legacyregistry.MustRegister(SyncProxyRulesLastTimestamp)
 | 
				
			||||||
		legacyregistry.MustRegister(NetworkProgrammingLatency)
 | 
							legacyregistry.MustRegister(NetworkProgrammingLatency)
 | 
				
			||||||
		legacyregistry.MustRegister(EndpointChangesPending)
 | 
							legacyregistry.MustRegister(EndpointChangesPending)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user