Skip to content

Commit 20c29cb

Browse files
huww98nyodas
authored andcommitted
kubelet/metrics: fix multiple Register call
DRA also calls Register at pkg/kubelet/cm/container_manager_linux.go NewContainerManager(), causing volume stats collector being ignored. Fix this by moving it out of `sync.Once()`, allowing multiple calls to `Register()` func.
1 parent b323abc commit 20c29cb

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

pkg/kubelet/cm/container_manager_linux.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I
317317
if err != nil {
318318
return nil, err
319319
}
320-
metrics.Register(cm.draManager.NewMetricsCollector())
320+
metrics.RegisterCollectors(cm.draManager.NewMetricsCollector())
321321
}
322322
cm.kubeClient = kubeClient
323323

pkg/kubelet/kubelet.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1632,7 +1632,8 @@ func (kl *Kubelet) StartGarbageCollection() {
16321632
// Note that the modules here must not depend on modules that are not initialized here.
16331633
func (kl *Kubelet) initializeModules(ctx context.Context) error {
16341634
// Prometheus metrics.
1635-
metrics.Register(
1635+
metrics.Register()
1636+
metrics.RegisterCollectors(
16361637
collectors.NewVolumeStatsCollector(kl),
16371638
collectors.NewLogMetricsCollector(kl.StatsProvider.ListPodStats),
16381639
)

pkg/kubelet/metrics/metrics.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,7 +1194,7 @@ var (
11941194
var registerMetrics sync.Once
11951195

11961196
// Register registers all metrics.
1197-
func Register(collectors ...metrics.StableCollector) {
1197+
func Register() {
11981198
// Register the metrics.
11991199
registerMetrics.Do(func() {
12001200
legacyregistry.MustRegister(FirstNetworkPodStartSLIDuration)
@@ -1274,8 +1274,6 @@ func Register(collectors ...metrics.StableCollector) {
12741274
legacyregistry.MustRegister(OrphanPodCleanedVolumes)
12751275
legacyregistry.MustRegister(OrphanPodCleanedVolumesErrors)
12761276

1277-
legacyregistry.CustomMustRegister(collectors...)
1278-
12791277
if utilfeature.DefaultFeatureGate.Enabled(features.GracefulNodeShutdown) &&
12801278
utilfeature.DefaultFeatureGate.Enabled(features.GracefulNodeShutdownBasedOnPodPriority) {
12811279
legacyregistry.MustRegister(GracefulShutdownStartTime)
@@ -1312,6 +1310,10 @@ func Register(collectors ...metrics.StableCollector) {
13121310
})
13131311
}
13141312

1313+
func RegisterCollectors(collectors ...metrics.StableCollector) {
1314+
legacyregistry.CustomMustRegister(collectors...)
1315+
}
1316+
13151317
// GetGather returns the gatherer. It used by test case outside current package.
13161318
func GetGather() metrics.Gatherer {
13171319
return legacyregistry.DefaultGatherer

0 commit comments

Comments
 (0)