mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	add gc and its enablement flag to kube-controller-manager
This commit is contained in:
		@@ -51,6 +51,7 @@ import (
 | 
			
		||||
	endpointcontroller "k8s.io/kubernetes/pkg/controller/endpoint"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller/framework"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller/framework/informers"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller/garbagecollector"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller/gc"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller/job"
 | 
			
		||||
	namespacecontroller "k8s.io/kubernetes/pkg/controller/namespace"
 | 
			
		||||
@@ -454,6 +455,23 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
			
		||||
	).Run()
 | 
			
		||||
	time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
 | 
			
		||||
 | 
			
		||||
	if s.EnableGarbageCollector {
 | 
			
		||||
		gcClientset := clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "generic-garbage-collector"))
 | 
			
		||||
		groupVersionResources, err := gcClientset.Discovery().ServerPreferredResources()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Fatalf("Failed to get supported resources from server: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		clientPool := dynamic.NewClientPool(restclient.AddUserAgent(kubeconfig, "generic-garbage-collector"), dynamic.LegacyAPIPathResolverFunc)
 | 
			
		||||
		garbageCollector, err := garbagecollector.NewGarbageCollector(clientPool, groupVersionResources)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Errorf("Failed to start the generic garbage collector")
 | 
			
		||||
		} else {
 | 
			
		||||
			// TODO: make this a flag of kube-controller-manager
 | 
			
		||||
			workers := 5
 | 
			
		||||
			go garbageCollector.Run(workers, wait.NeverStop)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// run the shared informers
 | 
			
		||||
	for _, informer := range informers {
 | 
			
		||||
		go informer.Run(wait.NeverStop)
 | 
			
		||||
 
 | 
			
		||||
@@ -89,6 +89,7 @@ func NewCMServer() *CMServer {
 | 
			
		||||
			KubeAPIBurst:            30,
 | 
			
		||||
			LeaderElection:          leaderelection.DefaultLeaderElectionConfiguration(),
 | 
			
		||||
			ControllerStartInterval: unversioned.Duration{Duration: 0 * time.Second},
 | 
			
		||||
			EnableGarbageCollector:  false,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	return &s
 | 
			
		||||
@@ -157,5 +158,6 @@ func (s *CMServer) AddFlags(fs *pflag.FlagSet) {
 | 
			
		||||
	fs.Float32Var(&s.KubeAPIQPS, "kube-api-qps", s.KubeAPIQPS, "QPS to use while talking with kubernetes apiserver")
 | 
			
		||||
	fs.Int32Var(&s.KubeAPIBurst, "kube-api-burst", s.KubeAPIBurst, "Burst to use while talking with kubernetes apiserver")
 | 
			
		||||
	fs.DurationVar(&s.ControllerStartInterval.Duration, "controller-start-interval", s.ControllerStartInterval.Duration, "Interval between starting controller managers.")
 | 
			
		||||
	fs.BoolVar(&s.EnableGarbageCollector, "enable-garbage-collector", s.EnableGarbageCollector, "Enables the generic garbage collector. MUST be synced with the corresponding flag of the kube-apiserver. WARNING: the generic garbage collector is an alpha feature.")
 | 
			
		||||
	leaderelection.BindFlags(&s.LeaderElection, fs)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -73,6 +73,7 @@ kube-controller-manager
 | 
			
		||||
      --deleting-pods-burst=10: Number of nodes on which pods are bursty deleted in case of node failure. For more details look into RateLimiter.
 | 
			
		||||
      --deleting-pods-qps=0.1: Number of nodes per second on which pods are deleted in case of node failure.
 | 
			
		||||
      --deployment-controller-sync-period=30s: Period for syncing the deployments.
 | 
			
		||||
      --enable-garbage-collector[=false]: Enables the generic garbage collector. MUST be synced with the corresponding flag of the kube-apiserver. WARNING: the generic garbage collector is an alpha feature.
 | 
			
		||||
      --enable-hostpath-provisioner[=false]: Enable HostPath PV provisioning when running without a cloud provider. This allows testing and development of provisioning features.  HostPath provisioning is not supported in any way, won't work in a multi-node cluster, and should not be used for anything other than testing or development.
 | 
			
		||||
      --flex-volume-plugin-dir="/usr/libexec/kubernetes/kubelet-plugins/volume/exec/": Full path of the directory in which the flex volume plugin should search for additional third party volume plugins.
 | 
			
		||||
      --google-json-key="": The Google Cloud Platform Service Account JSON Key to use for authentication.
 | 
			
		||||
@@ -114,7 +115,7 @@ kube-controller-manager
 | 
			
		||||
      --terminated-pod-gc-threshold=12500: Number of terminated pods that can exist before the terminated pod garbage collector starts deleting terminated pods. If <= 0, the terminated pod garbage collector is disabled.
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
###### Auto generated by spf13/cobra on 21-May-2016
 | 
			
		||||
###### Auto generated by spf13/cobra on 26-May-2016
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
 | 
			
		||||
 
 | 
			
		||||
@@ -110,6 +110,7 @@ e2e-output-dir
 | 
			
		||||
e2e-verify-service-account
 | 
			
		||||
enable-custom-metrics
 | 
			
		||||
enable-debugging-handlers
 | 
			
		||||
enable-garbage-collector
 | 
			
		||||
enable-hostpath-provisioner
 | 
			
		||||
enable-server
 | 
			
		||||
enable-swagger-ui
 | 
			
		||||
 
 | 
			
		||||
@@ -134,6 +134,7 @@ func DeepCopy_componentconfig_KubeControllerManagerConfiguration(in KubeControll
 | 
			
		||||
	if err := unversioned.DeepCopy_unversioned_Duration(in.ControllerStartInterval, &out.ControllerStartInterval, c); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	out.EnableGarbageCollector = in.EnableGarbageCollector
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -556,6 +556,10 @@ type KubeControllerManagerConfiguration struct {
 | 
			
		||||
	VolumeConfiguration VolumeConfiguration `json:"volumeConfiguration"`
 | 
			
		||||
	// How long to wait between starting controller managers
 | 
			
		||||
	ControllerStartInterval unversioned.Duration `json:"controllerStartInterval"`
 | 
			
		||||
	// enables the generic garbage collector. MUST be synced with the
 | 
			
		||||
	// corresponding flag of the kube-apiserver. WARNING: the generic garbage
 | 
			
		||||
	// collector is an alpha feature.
 | 
			
		||||
	EnableGarbageCollector bool `json:"enableGarbageCollector"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// VolumeConfiguration contains *all* enumerated flags meant to configure all volume
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user