mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Fix pending_pods, schedule_attempts_total was not recorded
because metric initializations are too early. This causes actual metric
instance become no-op.
modification made in thie commit to make sure actual metric instance won't be no-op metrics:
- re-initialize scheduler/metrics.PodSchedule{Successes, Failure, Errors} after metric creation
- scheduler/metrics.Register() should be called before initializing SchedulingQueue,
			
			
This commit is contained in:
		@@ -56,10 +56,13 @@ var (
 | 
			
		||||
			StabilityLevel: metrics.ALPHA,
 | 
			
		||||
		}, []string{"result"})
 | 
			
		||||
	// PodScheduleSuccesses counts how many pods were scheduled.
 | 
			
		||||
	// This metric will be initialized again in Register() to assure the metric is not no-op metric.
 | 
			
		||||
	PodScheduleSuccesses = scheduleAttempts.With(metrics.Labels{"result": "scheduled"})
 | 
			
		||||
	// PodScheduleFailures counts how many pods could not be scheduled.
 | 
			
		||||
	// This metric will be initialized again in Register() to assure the metric is not no-op metric.
 | 
			
		||||
	PodScheduleFailures = scheduleAttempts.With(metrics.Labels{"result": "unschedulable"})
 | 
			
		||||
	// PodScheduleErrors counts how many pods could not be scheduled due to a scheduler error.
 | 
			
		||||
	// This metric will be initialized again in Register() to assure the metric is not no-op metric.
 | 
			
		||||
	PodScheduleErrors            = scheduleAttempts.With(metrics.Labels{"result": "error"})
 | 
			
		||||
	DeprecatedSchedulingDuration = metrics.NewSummaryVec(
 | 
			
		||||
		&metrics.SummaryOpts{
 | 
			
		||||
@@ -262,6 +265,9 @@ func Register() {
 | 
			
		||||
			legacyregistry.MustRegister(metric)
 | 
			
		||||
		}
 | 
			
		||||
		volumeschedulingmetrics.RegisterVolumeSchedulingMetrics()
 | 
			
		||||
		PodScheduleSuccesses = scheduleAttempts.With(metrics.Labels{"result": "scheduled"})
 | 
			
		||||
		PodScheduleFailures = scheduleAttempts.With(metrics.Labels{"result": "unschedulable"})
 | 
			
		||||
		PodScheduleErrors = scheduleAttempts.With(metrics.Labels{"result": "error"})
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -291,6 +291,8 @@ func New(client clientset.Interface,
 | 
			
		||||
		nodeInfoSnapshot:               snapshot,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	metrics.Register()
 | 
			
		||||
 | 
			
		||||
	var sched *Scheduler
 | 
			
		||||
	source := options.schedulerAlgorithmSource
 | 
			
		||||
	switch {
 | 
			
		||||
@@ -322,7 +324,6 @@ func New(client clientset.Interface,
 | 
			
		||||
	default:
 | 
			
		||||
		return nil, fmt.Errorf("unsupported algorithm source: %v", source)
 | 
			
		||||
	}
 | 
			
		||||
	metrics.Register()
 | 
			
		||||
	// Additional tweaks to the config produced by the configurator.
 | 
			
		||||
	sched.Recorder = recorder
 | 
			
		||||
	sched.DisablePreemption = options.disablePreemption
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user