fix 1589-disable hpa controller

Signed-off-by: Poor12 <shentiecheng@huawei.com>
This commit is contained in:
Poor12 2022-04-02 15:45:27 +08:00
parent 9cbe962748
commit 83be916fa5
4 changed files with 25 additions and 10 deletions

View File

@ -9,6 +9,7 @@ import (
"github.com/spf13/cobra"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/dynamic"
kubeclientset "k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
@ -90,6 +91,8 @@ func NewAgentCommand(ctx context.Context) *cobra.Command {
var controllers = make(controllerscontext.Initializers)
var controllersDisabledByDefault = sets.NewString()
func init() {
controllers["clusterStatus"] = startClusterStatusController
controllers["execution"] = startExecutionController
@ -192,7 +195,7 @@ func setupControllers(mgr controllerruntime.Manager, opts *options.Options, stop
StopChan: stopChan,
}
if err := controllers.StartControllers(controllerContext); err != nil {
if err := controllers.StartControllers(controllerContext, controllersDisabledByDefault); err != nil {
return fmt.Errorf("error starting controllers: %w", err)
}

View File

@ -9,6 +9,7 @@ import (
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
kubeclientset "k8s.io/client-go/kubernetes"
@ -79,7 +80,7 @@ func NewControllerManagerCommand(ctx context.Context) *cobra.Command {
// and update the flag usage.
genericFlagSet.AddGoFlagSet(flag.CommandLine)
genericFlagSet.Lookup("kubeconfig").Usage = "Path to karmada control plane kubeconfig file."
opts.AddFlags(genericFlagSet, controllers.ControllerNames())
opts.AddFlags(genericFlagSet, controllers.ControllerNames(), controllersDisabledByDefault.List())
// Set klog flags
logsFlagSet := fss.FlagSet("logs")
@ -146,6 +147,11 @@ func Run(ctx context.Context, opts *options.Options) error {
var controllers = make(controllerscontext.Initializers)
// controllersDisabledByDefault is the set of controllers which is disabled by default
var controllersDisabledByDefault = sets.NewString(
"hpa",
)
func init() {
controllers["cluster"] = startClusterController
controllers["clusterStatus"] = startClusterStatusController
@ -483,7 +489,7 @@ func setupControllers(mgr controllerruntime.Manager, opts *options.Options, stop
ResourceInterpreter: resourceInterpreter,
}
if err := controllers.StartControllers(controllerContext); err != nil {
if err := controllers.StartControllers(controllerContext, controllersDisabledByDefault); err != nil {
klog.Fatalf("error starting controllers: %v", err)
}

View File

@ -115,10 +115,10 @@ func NewOptions() *Options {
}
// AddFlags adds flags to the specified FlagSet.
func (o *Options) AddFlags(flags *pflag.FlagSet, allControllers []string) {
func (o *Options) AddFlags(flags *pflag.FlagSet, allControllers, disabledByDefaultControllers []string) {
flags.StringSliceVar(&o.Controllers, "controllers", []string{"*"}, fmt.Sprintf(
"A list of controllers to enable. '*' enables all on-by-default controllers, 'foo' enables the controller named 'foo', '-foo' disables the controller named 'foo'. All controllers: %s.",
strings.Join(allControllers, ", "),
"A list of controllers to enable. '*' enables all on-by-default controllers, 'foo' enables the controller named 'foo', '-foo' disables the controller named 'foo'. \nAll controllers: %s.\nDisabled-by-default controllers: %s",
strings.Join(allControllers, ", "), strings.Join(disabledByDefaultControllers, ", "),
))
flags.StringVar(&o.BindAddress, "bind-address", defaultBindAddress,
"The IP address on which to listen for the --secure-port port.")

View File

@ -67,7 +67,7 @@ type Context struct {
}
// IsControllerEnabled check if a specified controller enabled or not.
func (c Context) IsControllerEnabled(name string) bool {
func (c Context) IsControllerEnabled(name string, disabledByDefaultControllers sets.String) bool {
hasStar := false
for _, ctrl := range c.Opts.Controllers {
if ctrl == name {
@ -80,7 +80,13 @@ func (c Context) IsControllerEnabled(name string) bool {
hasStar = true
}
}
return hasStar
// if we get here, there was no explicit choice
if !hasStar {
// nothing on by default
return false
}
return !disabledByDefaultControllers.Has(name)
}
// InitFunc is used to launch a particular controller.
@ -97,9 +103,9 @@ func (i Initializers) ControllerNames() []string {
}
// StartControllers starts a set of controllers with a specified ControllerContext
func (i Initializers) StartControllers(ctx Context) error {
func (i Initializers) StartControllers(ctx Context, controllersDisabledByDefault sets.String) error {
for controllerName, initFn := range i {
if !ctx.IsControllerEnabled(controllerName) {
if !ctx.IsControllerEnabled(controllerName, controllersDisabledByDefault) {
klog.Warningf("%q is disabled", controllerName)
continue
}