mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 10:51:29 +00:00
Merge pull request #111033 from jprzychodzen/kcm-nodeipam
Enable 'running_managed_controllers' for KCM/CCM for cloud-node-lifecycle controller
This commit is contained in:
commit
4995562a77
@ -56,6 +56,7 @@ import (
|
||||
"k8s.io/component-base/configz"
|
||||
"k8s.io/component-base/logs"
|
||||
logsapi "k8s.io/component-base/logs/api/v1"
|
||||
controllersmetrics "k8s.io/component-base/metrics/prometheus/controllers"
|
||||
"k8s.io/component-base/term"
|
||||
"k8s.io/component-base/version"
|
||||
"k8s.io/component-base/version/verflag"
|
||||
@ -360,6 +361,9 @@ type ControllerContext struct {
|
||||
// multiple controllers don't get into lock-step and all hammer the apiserver
|
||||
// with list requests simultaneously.
|
||||
ResyncPeriod func() time.Duration
|
||||
|
||||
// ControllerManagerMetrics provides a proxy to set controller manager specific metrics.
|
||||
ControllerManagerMetrics *controllersmetrics.ControllerManagerMetrics
|
||||
}
|
||||
|
||||
// IsControllerEnabled checks if the context's controllers enabled or not
|
||||
@ -534,6 +538,7 @@ func CreateControllerContext(s *config.CompletedConfig, rootClientBuilder, clien
|
||||
LoopMode: loopMode,
|
||||
InformersStarted: make(chan struct{}),
|
||||
ResyncPeriod: ResyncPeriod(s),
|
||||
ControllerManagerMetrics: controllersmetrics.NewControllerManagerMetrics("kube-controller-manager"),
|
||||
}
|
||||
return ctx, nil
|
||||
}
|
||||
|
@ -212,7 +212,7 @@ func startCloudNodeLifecycleController(ctx context.Context, controllerContext Co
|
||||
return nil, false, nil
|
||||
}
|
||||
|
||||
go cloudNodeLifecycleController.Run(ctx)
|
||||
go cloudNodeLifecycleController.Run(ctx, controllerContext.ControllerManagerMetrics)
|
||||
return nil, true, nil
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,7 @@ import (
|
||||
cliflag "k8s.io/component-base/cli/flag"
|
||||
"k8s.io/component-base/cli/globalflag"
|
||||
"k8s.io/component-base/configz"
|
||||
controllersmetrics "k8s.io/component-base/metrics/prometheus/controllers"
|
||||
"k8s.io/component-base/term"
|
||||
"k8s.io/component-base/version"
|
||||
"k8s.io/component-base/version/verflag"
|
||||
@ -370,7 +371,7 @@ func StartCloudNodeControllerWrapper(initContext ControllerInitContext, complete
|
||||
// StartCloudNodeLifecycleControllerWrapper is used to take cloud config as input and start cloud node lifecycle controller
|
||||
func StartCloudNodeLifecycleControllerWrapper(initContext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc {
|
||||
return func(ctx context.Context, controllerContext genericcontrollermanager.ControllerContext) (controller.Interface, bool, error) {
|
||||
return startCloudNodeLifecycleController(ctx, initContext, completedConfig, cloud)
|
||||
return startCloudNodeLifecycleController(ctx, initContext, controllerContext, completedConfig, cloud)
|
||||
}
|
||||
}
|
||||
|
||||
@ -457,6 +458,7 @@ func CreateControllerContext(s *cloudcontrollerconfig.CompletedConfig, clientBui
|
||||
Stop: stop,
|
||||
InformersStarted: make(chan struct{}),
|
||||
ResyncPeriod: ResyncPeriod(s),
|
||||
ControllerManagerMetrics: controllersmetrics.NewControllerManagerMetrics("cloud-controller-manager"),
|
||||
}
|
||||
return ctx, nil
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ import (
|
||||
cloudnodelifecyclecontroller "k8s.io/cloud-provider/controllers/nodelifecycle"
|
||||
routecontroller "k8s.io/cloud-provider/controllers/route"
|
||||
servicecontroller "k8s.io/cloud-provider/controllers/service"
|
||||
controllermanagerapp "k8s.io/controller-manager/app"
|
||||
"k8s.io/controller-manager/controller"
|
||||
"k8s.io/controller-manager/pkg/features"
|
||||
"k8s.io/klog/v2"
|
||||
@ -59,7 +60,7 @@ func startCloudNodeController(ctx context.Context, initContext ControllerInitCon
|
||||
return nil, true, nil
|
||||
}
|
||||
|
||||
func startCloudNodeLifecycleController(ctx context.Context, initContext ControllerInitContext, completedConfig *config.CompletedConfig, cloud cloudprovider.Interface) (controller.Interface, bool, error) {
|
||||
func startCloudNodeLifecycleController(ctx context.Context, initContext ControllerInitContext, controlexContext controllermanagerapp.ControllerContext, completedConfig *config.CompletedConfig, cloud cloudprovider.Interface) (controller.Interface, bool, error) {
|
||||
// Start the cloudNodeLifecycleController
|
||||
cloudNodeLifecycleController, err := cloudnodelifecyclecontroller.NewCloudNodeLifecycleController(
|
||||
completedConfig.SharedInformers.Core().V1().Nodes(),
|
||||
@ -73,7 +74,7 @@ func startCloudNodeLifecycleController(ctx context.Context, initContext Controll
|
||||
return nil, false, nil
|
||||
}
|
||||
|
||||
go cloudNodeLifecycleController.Run(ctx)
|
||||
go cloudNodeLifecycleController.Run(ctx, controlexContext.ControllerManagerMetrics)
|
||||
|
||||
return nil, true, nil
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ import (
|
||||
cloudprovider "k8s.io/cloud-provider"
|
||||
cloudproviderapi "k8s.io/cloud-provider/api"
|
||||
cloudnodeutil "k8s.io/cloud-provider/node/helpers"
|
||||
controllersmetrics "k8s.io/component-base/metrics/prometheus/controllers"
|
||||
nodeutil "k8s.io/component-helpers/node/util"
|
||||
"k8s.io/klog/v2"
|
||||
)
|
||||
@ -104,8 +105,10 @@ func NewCloudNodeLifecycleController(
|
||||
|
||||
// Run starts the main loop for this controller. Run is blocking so should
|
||||
// be called via a goroutine
|
||||
func (c *CloudNodeLifecycleController) Run(ctx context.Context) {
|
||||
func (c *CloudNodeLifecycleController) Run(ctx context.Context, controllerManagerMetrics *controllersmetrics.ControllerManagerMetrics) {
|
||||
defer utilruntime.HandleCrash()
|
||||
controllerManagerMetrics.ControllerStarted("cloud-node-lifecycle")
|
||||
defer controllerManagerMetrics.ControllerStopped("cloud-node-lifecycle")
|
||||
|
||||
// The following loops run communicate with the APIServer with a worst case complexity
|
||||
// of O(num_nodes) per cycle. These functions are justified here because these events fire
|
||||
|
@ -22,6 +22,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/client-go/informers"
|
||||
"k8s.io/client-go/restmapper"
|
||||
controllersmetrics "k8s.io/component-base/metrics/prometheus/controllers"
|
||||
"k8s.io/controller-manager/pkg/clientbuilder"
|
||||
"k8s.io/controller-manager/pkg/informerfactory"
|
||||
)
|
||||
@ -59,4 +60,7 @@ type ControllerContext struct {
|
||||
// multiple controllers don't get into lock-step and all hammer the apiserver
|
||||
// with list requests simultaneously.
|
||||
ResyncPeriod func() time.Duration
|
||||
|
||||
// ControllerManagerMetrics provides a proxy to set controller manager specific metrics.
|
||||
ControllerManagerMetrics *controllersmetrics.ControllerManagerMetrics
|
||||
}
|
||||
|
1
vendor/modules.txt
vendored
1
vendor/modules.txt
vendored
@ -2068,6 +2068,7 @@ k8s.io/component-base/metrics
|
||||
k8s.io/component-base/metrics/legacyregistry
|
||||
k8s.io/component-base/metrics/prometheus/clientgo
|
||||
k8s.io/component-base/metrics/prometheus/clientgo/leaderelection
|
||||
k8s.io/component-base/metrics/prometheus/controllers
|
||||
k8s.io/component-base/metrics/prometheus/ratelimiter
|
||||
k8s.io/component-base/metrics/prometheus/restclient
|
||||
k8s.io/component-base/metrics/prometheus/version
|
||||
|
Loading…
Reference in New Issue
Block a user