diff --git a/cmd/kube-controller-manager/app/core.go b/cmd/kube-controller-manager/app/core.go index cb692299647..991b29a4347 100644 --- a/cmd/kube-controller-manager/app/core.go +++ b/cmd/kube-controller-manager/app/core.go @@ -166,7 +166,7 @@ func startNodeIpamController(ctx context.Context, controllerContext ControllerCo if err != nil { return nil, true, err } - go nodeIpamController.Run(ctx.Done()) + go nodeIpamController.RunWithMetrics(ctx.Done(), controllerContext.ControllerManagerMetrics) return nil, true, nil } diff --git a/pkg/controller/nodeipam/node_ipam_controller.go b/pkg/controller/nodeipam/node_ipam_controller.go index 3e600e28a3b..3a3c8ce1919 100644 --- a/pkg/controller/nodeipam/node_ipam_controller.go +++ b/pkg/controller/nodeipam/node_ipam_controller.go @@ -32,6 +32,7 @@ import ( clientset "k8s.io/client-go/kubernetes" corelisters "k8s.io/client-go/listers/core/v1" cloudprovider "k8s.io/cloud-provider" + controllersmetrics "k8s.io/component-base/metrics/prometheus/controllers" "k8s.io/component-base/metrics/prometheus/ratelimiter" "k8s.io/kubernetes/pkg/controller/nodeipam/ipam" ) @@ -164,3 +165,10 @@ func (nc *Controller) Run(stopCh <-chan struct{}) { <-stopCh } + +// RunWithMetrics is a wrapper for Run that also tracks starting and stopping of the nodeipam controller with additional metric +func (nc *Controller) RunWithMetrics(stopCh <-chan struct{}, controllerManagerMetrics *controllersmetrics.ControllerManagerMetrics) { + controllerManagerMetrics.ControllerStarted("nodeipam") + defer controllerManagerMetrics.ControllerStopped("nodeipam") + nc.Run(stopCh) +}