mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
use common controller interface in CCM.
This commit is contained in:
parent
8f5771d243
commit
6f437c7155
@ -23,7 +23,6 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
@ -31,6 +30,7 @@ import (
|
|||||||
"k8s.io/cloud-provider/app"
|
"k8s.io/cloud-provider/app"
|
||||||
cloudcontrollerconfig "k8s.io/cloud-provider/app/config"
|
cloudcontrollerconfig "k8s.io/cloud-provider/app/config"
|
||||||
genericcontrollermanager "k8s.io/controller-manager/app"
|
genericcontrollermanager "k8s.io/controller-manager/app"
|
||||||
|
"k8s.io/controller-manager/controller"
|
||||||
"k8s.io/controller-manager/pkg/features"
|
"k8s.io/controller-manager/pkg/features"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
nodeipamcontrolleroptions "k8s.io/kubernetes/cmd/kube-controller-manager/app/options"
|
nodeipamcontrolleroptions "k8s.io/kubernetes/cmd/kube-controller-manager/app/options"
|
||||||
@ -59,12 +59,12 @@ func (nodeIpamController *nodeIPAMController) StartNodeIpamControllerWrapper(ini
|
|||||||
}
|
}
|
||||||
nodeIpamController.nodeIPAMControllerOptions.ApplyTo(&nodeIpamController.nodeIPAMControllerConfiguration)
|
nodeIpamController.nodeIPAMControllerOptions.ApplyTo(&nodeIpamController.nodeIPAMControllerConfiguration)
|
||||||
|
|
||||||
return func(ctx genericcontrollermanager.ControllerContext) (http.Handler, bool, error) {
|
return func(ctx genericcontrollermanager.ControllerContext) (controller.Interface, bool, error) {
|
||||||
return startNodeIpamController(initContext, completedConfig, nodeIpamController.nodeIPAMControllerConfiguration, ctx, cloud)
|
return startNodeIpamController(initContext, completedConfig, nodeIpamController.nodeIPAMControllerConfiguration, ctx, cloud)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func startNodeIpamController(initContext app.ControllerInitContext, ccmConfig *cloudcontrollerconfig.CompletedConfig, nodeIPAMConfig nodeipamconfig.NodeIPAMControllerConfiguration, ctx genericcontrollermanager.ControllerContext, cloud cloudprovider.Interface) (http.Handler, bool, error) {
|
func startNodeIpamController(initContext app.ControllerInitContext, ccmConfig *cloudcontrollerconfig.CompletedConfig, nodeIPAMConfig nodeipamconfig.NodeIPAMControllerConfiguration, ctx genericcontrollermanager.ControllerContext, cloud cloudprovider.Interface) (controller.Interface, bool, error) {
|
||||||
var serviceCIDR *net.IPNet
|
var serviceCIDR *net.IPNet
|
||||||
var secondaryServiceCIDR *net.IPNet
|
var secondaryServiceCIDR *net.IPNet
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net/http"
|
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -50,6 +49,7 @@ import (
|
|||||||
"k8s.io/component-base/version"
|
"k8s.io/component-base/version"
|
||||||
"k8s.io/component-base/version/verflag"
|
"k8s.io/component-base/version/verflag"
|
||||||
genericcontrollermanager "k8s.io/controller-manager/app"
|
genericcontrollermanager "k8s.io/controller-manager/app"
|
||||||
|
"k8s.io/controller-manager/controller"
|
||||||
"k8s.io/controller-manager/pkg/clientbuilder"
|
"k8s.io/controller-manager/pkg/clientbuilder"
|
||||||
"k8s.io/controller-manager/pkg/informerfactory"
|
"k8s.io/controller-manager/pkg/informerfactory"
|
||||||
"k8s.io/controller-manager/pkg/leadermigration"
|
"k8s.io/controller-manager/pkg/leadermigration"
|
||||||
@ -302,10 +302,14 @@ func startControllers(cloud cloudprovider.Interface, ctx genericcontrollermanage
|
|||||||
// InitCloudFunc is used to initialize cloud
|
// InitCloudFunc is used to initialize cloud
|
||||||
type InitCloudFunc func(config *cloudcontrollerconfig.CompletedConfig) cloudprovider.Interface
|
type InitCloudFunc func(config *cloudcontrollerconfig.CompletedConfig) cloudprovider.Interface
|
||||||
|
|
||||||
// InitFunc is used to launch a particular controller. It may run additional "should I activate checks".
|
// InitFunc is used to launch a particular controller. It returns a controller
|
||||||
|
// that can optionally implement other interfaces so that the controller manager
|
||||||
|
// can support the requested features.
|
||||||
|
// The returned controller may be nil, which will be considered an anonymous controller
|
||||||
|
// that requests no additional features from the controller manager.
|
||||||
// Any error returned will cause the controller process to `Fatal`
|
// Any error returned will cause the controller process to `Fatal`
|
||||||
// The bool indicates whether the controller was enabled.
|
// The bool indicates whether the controller was enabled.
|
||||||
type InitFunc func(ctx genericcontrollermanager.ControllerContext) (debuggingHandler http.Handler, enabled bool, err error)
|
type InitFunc func(ctx genericcontrollermanager.ControllerContext) (controller controller.Interface, enabled bool, err error)
|
||||||
|
|
||||||
// InitFuncConstructor is used to construct InitFunc
|
// InitFuncConstructor is used to construct InitFunc
|
||||||
type InitFuncConstructor func(initcontext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc
|
type InitFuncConstructor func(initcontext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc
|
||||||
@ -340,28 +344,28 @@ type ControllerInitContext struct {
|
|||||||
|
|
||||||
// StartCloudNodeControllerWrapper is used to take cloud cofig as input and start cloud node controller
|
// StartCloudNodeControllerWrapper is used to take cloud cofig as input and start cloud node controller
|
||||||
func StartCloudNodeControllerWrapper(initContext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc {
|
func StartCloudNodeControllerWrapper(initContext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc {
|
||||||
return func(ctx genericcontrollermanager.ControllerContext) (http.Handler, bool, error) {
|
return func(ctx genericcontrollermanager.ControllerContext) (controller.Interface, bool, error) {
|
||||||
return startCloudNodeController(initContext, completedConfig, cloud, ctx.Stop)
|
return startCloudNodeController(initContext, completedConfig, cloud, ctx.Stop)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// StartCloudNodeLifecycleControllerWrapper is used to take cloud cofig as input and start cloud node lifecycle controller
|
// StartCloudNodeLifecycleControllerWrapper is used to take cloud cofig as input and start cloud node lifecycle controller
|
||||||
func StartCloudNodeLifecycleControllerWrapper(initContext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc {
|
func StartCloudNodeLifecycleControllerWrapper(initContext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc {
|
||||||
return func(ctx genericcontrollermanager.ControllerContext) (http.Handler, bool, error) {
|
return func(ctx genericcontrollermanager.ControllerContext) (controller.Interface, bool, error) {
|
||||||
return startCloudNodeLifecycleController(initContext, completedConfig, cloud, ctx.Stop)
|
return startCloudNodeLifecycleController(initContext, completedConfig, cloud, ctx.Stop)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// StartServiceControllerWrapper is used to take cloud cofig as input and start service controller
|
// StartServiceControllerWrapper is used to take cloud cofig as input and start service controller
|
||||||
func StartServiceControllerWrapper(initContext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc {
|
func StartServiceControllerWrapper(initContext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc {
|
||||||
return func(ctx genericcontrollermanager.ControllerContext) (http.Handler, bool, error) {
|
return func(ctx genericcontrollermanager.ControllerContext) (controller.Interface, bool, error) {
|
||||||
return startServiceController(initContext, completedConfig, cloud, ctx.Stop)
|
return startServiceController(initContext, completedConfig, cloud, ctx.Stop)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// StartRouteControllerWrapper is used to take cloud cofig as input and start route controller
|
// StartRouteControllerWrapper is used to take cloud cofig as input and start route controller
|
||||||
func StartRouteControllerWrapper(initContext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc {
|
func StartRouteControllerWrapper(initContext ControllerInitContext, completedConfig *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface) InitFunc {
|
||||||
return func(ctx genericcontrollermanager.ControllerContext) (http.Handler, bool, error) {
|
return func(ctx genericcontrollermanager.ControllerContext) (controller.Interface, bool, error) {
|
||||||
return startRouteController(initContext, completedConfig, cloud, ctx.Stop)
|
return startRouteController(initContext, completedConfig, cloud, ctx.Stop)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,6 @@ package app
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
@ -32,6 +31,7 @@ import (
|
|||||||
cloudnodelifecyclecontroller "k8s.io/cloud-provider/controllers/nodelifecycle"
|
cloudnodelifecyclecontroller "k8s.io/cloud-provider/controllers/nodelifecycle"
|
||||||
routecontroller "k8s.io/cloud-provider/controllers/route"
|
routecontroller "k8s.io/cloud-provider/controllers/route"
|
||||||
servicecontroller "k8s.io/cloud-provider/controllers/service"
|
servicecontroller "k8s.io/cloud-provider/controllers/service"
|
||||||
|
"k8s.io/controller-manager/controller"
|
||||||
"k8s.io/controller-manager/pkg/features"
|
"k8s.io/controller-manager/pkg/features"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
netutils "k8s.io/utils/net"
|
netutils "k8s.io/utils/net"
|
||||||
@ -39,7 +39,7 @@ import (
|
|||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
)
|
)
|
||||||
|
|
||||||
func startCloudNodeController(initContext ControllerInitContext, ctx *config.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (http.Handler, bool, error) {
|
func startCloudNodeController(initContext ControllerInitContext, ctx *config.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (controller.Interface, bool, error) {
|
||||||
// Start the CloudNodeController
|
// Start the CloudNodeController
|
||||||
nodeController, err := cloudnodecontroller.NewCloudNodeController(
|
nodeController, err := cloudnodecontroller.NewCloudNodeController(
|
||||||
ctx.SharedInformers.Core().V1().Nodes(),
|
ctx.SharedInformers.Core().V1().Nodes(),
|
||||||
@ -58,7 +58,7 @@ func startCloudNodeController(initContext ControllerInitContext, ctx *config.Com
|
|||||||
return nil, true, nil
|
return nil, true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func startCloudNodeLifecycleController(initContext ControllerInitContext, ctx *config.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (http.Handler, bool, error) {
|
func startCloudNodeLifecycleController(initContext ControllerInitContext, ctx *config.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (controller.Interface, bool, error) {
|
||||||
// Start the cloudNodeLifecycleController
|
// Start the cloudNodeLifecycleController
|
||||||
cloudNodeLifecycleController, err := cloudnodelifecyclecontroller.NewCloudNodeLifecycleController(
|
cloudNodeLifecycleController, err := cloudnodelifecyclecontroller.NewCloudNodeLifecycleController(
|
||||||
ctx.SharedInformers.Core().V1().Nodes(),
|
ctx.SharedInformers.Core().V1().Nodes(),
|
||||||
@ -77,7 +77,7 @@ func startCloudNodeLifecycleController(initContext ControllerInitContext, ctx *c
|
|||||||
return nil, true, nil
|
return nil, true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func startServiceController(initContext ControllerInitContext, ctx *config.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (http.Handler, bool, error) {
|
func startServiceController(initContext ControllerInitContext, ctx *config.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (controller.Interface, bool, error) {
|
||||||
// Start the service controller
|
// Start the service controller
|
||||||
serviceController, err := servicecontroller.New(
|
serviceController, err := servicecontroller.New(
|
||||||
cloud,
|
cloud,
|
||||||
@ -98,7 +98,7 @@ func startServiceController(initContext ControllerInitContext, ctx *config.Compl
|
|||||||
return nil, true, nil
|
return nil, true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func startRouteController(initContext ControllerInitContext, ctx *config.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (http.Handler, bool, error) {
|
func startRouteController(initContext ControllerInitContext, ctx *config.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (controller.Interface, bool, error) {
|
||||||
if !ctx.ComponentConfig.KubeCloudShared.ConfigureCloudRoutes {
|
if !ctx.ComponentConfig.KubeCloudShared.ConfigureCloudRoutes {
|
||||||
klog.Infof("Will not configure cloud provider routes, --configure-cloud-routes: %v", ctx.ComponentConfig.KubeCloudShared.ConfigureCloudRoutes)
|
klog.Infof("Will not configure cloud provider routes, --configure-cloud-routes: %v", ctx.ComponentConfig.KubeCloudShared.ConfigureCloudRoutes)
|
||||||
return nil, false, nil
|
return nil, false, nil
|
||||||
|
Loading…
Reference in New Issue
Block a user