Merge pull request #101895 from pacoxu/scheduler-proxy-port-wait

e2e: waiting for scheduler pod to expose metrics once
This commit is contained in:
Kubernetes Prow Robot 2021-05-13 09:34:38 -07:00 committed by GitHub
commit 9739592e84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -59,6 +59,7 @@ type Grabber struct {
grabFromScheduler bool grabFromScheduler bool
grabFromClusterAutoscaler bool grabFromClusterAutoscaler bool
kubeScheduler string kubeScheduler string
waitForSchedulerReadyOnce sync.Once
kubeControllerManager string kubeControllerManager string
waitForControllerManagerReadyOnce sync.Once waitForControllerManagerReadyOnce sync.Once
} }
@ -149,7 +150,19 @@ func (g *Grabber) GrabFromScheduler() (SchedulerMetrics, error) {
if g.kubeScheduler == "" { if g.kubeScheduler == "" {
return SchedulerMetrics{}, fmt.Errorf("kube-scheduler pod is not registered. Skipping Scheduler's metrics gathering") return SchedulerMetrics{}, fmt.Errorf("kube-scheduler pod is not registered. Skipping Scheduler's metrics gathering")
} }
output, err := g.getMetricsFromPod(g.client, metricsProxyPod, metav1.NamespaceSystem, kubeSchedulerPort)
var err error
var output string
g.waitForSchedulerReadyOnce.Do(func() {
var lastMetricsFetchErr error
if metricsWaitErr := wait.PollImmediate(time.Second, time.Minute, func() (bool, error) {
output, lastMetricsFetchErr = g.getMetricsFromPod(g.client, metricsProxyPod, metav1.NamespaceSystem, kubeSchedulerPort)
return lastMetricsFetchErr == nil, nil
}); metricsWaitErr != nil {
err = fmt.Errorf("error waiting for scheduler pod to expose metrics: %v; %v", metricsWaitErr, lastMetricsFetchErr)
return
}
})
if err != nil { if err != nil {
return SchedulerMetrics{}, err return SchedulerMetrics{}, err
} }
@ -184,6 +197,7 @@ func (g *Grabber) GrabFromControllerManager() (ControllerManagerMetrics, error)
} }
var err error var err error
var output string
podName := g.kubeControllerManager podName := g.kubeControllerManager
g.waitForControllerManagerReadyOnce.Do(func() { g.waitForControllerManagerReadyOnce.Do(func() {
if readyErr := e2epod.WaitForPodsReady(g.client, metav1.NamespaceSystem, podName, 0); readyErr != nil { if readyErr := e2epod.WaitForPodsReady(g.client, metav1.NamespaceSystem, podName, 0); readyErr != nil {
@ -193,7 +207,7 @@ func (g *Grabber) GrabFromControllerManager() (ControllerManagerMetrics, error)
var lastMetricsFetchErr error var lastMetricsFetchErr error
if metricsWaitErr := wait.PollImmediate(time.Second, time.Minute, func() (bool, error) { if metricsWaitErr := wait.PollImmediate(time.Second, time.Minute, func() (bool, error) {
_, lastMetricsFetchErr = g.getMetricsFromPod(g.client, metricsProxyPod, metav1.NamespaceSystem, kubeControllerManagerPort) output, lastMetricsFetchErr = g.getMetricsFromPod(g.client, metricsProxyPod, metav1.NamespaceSystem, kubeControllerManagerPort)
return lastMetricsFetchErr == nil, nil return lastMetricsFetchErr == nil, nil
}); metricsWaitErr != nil { }); metricsWaitErr != nil {
err = fmt.Errorf("error waiting for controller manager pod to expose metrics: %v; %v", metricsWaitErr, lastMetricsFetchErr) err = fmt.Errorf("error waiting for controller manager pod to expose metrics: %v; %v", metricsWaitErr, lastMetricsFetchErr)
@ -203,11 +217,6 @@ func (g *Grabber) GrabFromControllerManager() (ControllerManagerMetrics, error)
if err != nil { if err != nil {
return ControllerManagerMetrics{}, err return ControllerManagerMetrics{}, err
} }
output, err := g.getMetricsFromPod(g.client, metricsProxyPod, metav1.NamespaceSystem, kubeControllerManagerPort)
if err != nil {
return ControllerManagerMetrics{}, err
}
return parseControllerManagerMetrics(output) return parseControllerManagerMetrics(output)
} }