From e1ceb2fc664b6240073c61e3886653140c619be0 Mon Sep 17 00:00:00 2001 From: Joel Speed Date: Sat, 3 Nov 2018 15:52:50 +0000 Subject: [PATCH] Serve metrics even if not leader --- pkg/manager/internal.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkg/manager/internal.go b/pkg/manager/internal.go index 34eb7092fa..35cdf3846a 100644 --- a/pkg/manager/internal.go +++ b/pkg/manager/internal.go @@ -204,6 +204,13 @@ func (cm *controllerManager) Start(stop <-chan struct{}) error { // join the passed-in stop channel as an upstream feeding into cm.internalStopper defer close(cm.internalStopper) + // Metrics should be served whether the controller is leader or not. + // (If we don't serve metrics for non-leaders, prometheus will still scrape + // the pod but will get a connection refused) + if cm.metricsListener != nil { + go cm.serveMetrics(cm.internalStop) + } + if cm.resourceLock != nil { err := cm.startLeaderElection() if err != nil { @@ -237,11 +244,6 @@ func (cm *controllerManager) start() { } }() - // Start the metrics server - if cm.metricsListener != nil { - go cm.serveMetrics(cm.internalStop) - } - // Wait for the caches to sync. // TODO(community): Check the return value and write a test cm.cache.WaitForCacheSync(cm.internalStop)