mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Multiple scheduler leader election support
This commit is contained in:
		@@ -702,5 +702,7 @@ windows-line-endings
 | 
				
			|||||||
www-prefix
 | 
					www-prefix
 | 
				
			||||||
zone-id
 | 
					zone-id
 | 
				
			||||||
zone-name
 | 
					zone-name
 | 
				
			||||||
 | 
					lock-object-name
 | 
				
			||||||
 | 
					lock-object-namespace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
horizontal-pod-autoscaler-use-rest-clients
 | 
					horizontal-pod-autoscaler-use-rest-clients
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -595,6 +595,10 @@ type KubeSchedulerConfiguration struct {
 | 
				
			|||||||
	FailureDomains string
 | 
						FailureDomains string
 | 
				
			||||||
	// leaderElection defines the configuration of leader election client.
 | 
						// leaderElection defines the configuration of leader election client.
 | 
				
			||||||
	LeaderElection LeaderElectionConfiguration
 | 
						LeaderElection LeaderElectionConfiguration
 | 
				
			||||||
 | 
						// LockObjectNamespace defines the namespace of the lock object
 | 
				
			||||||
 | 
						LockObjectNamespace string
 | 
				
			||||||
 | 
						// LockObjectName defines the lock object name
 | 
				
			||||||
 | 
						LockObjectName string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// LeaderElectionConfiguration defines the configuration of leader election
 | 
					// LeaderElectionConfiguration defines the configuration of leader election
 | 
				
			||||||
@@ -904,3 +908,11 @@ func (m *ConfigurationMap) Set(value string) error {
 | 
				
			|||||||
func (*ConfigurationMap) Type() string {
 | 
					func (*ConfigurationMap) Type() string {
 | 
				
			||||||
	return "mapStringString"
 | 
						return "mapStringString"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// "kube-system" is the default scheduler lock object namespace
 | 
				
			||||||
 | 
						SchedulerDefaultLockObjectNamespace string = "kube-system"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// "kube-scheduler" is the default scheduler lock object name
 | 
				
			||||||
 | 
						SchedulerDefaultLockObjectName = "kube-scheduler"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -158,6 +158,12 @@ func SetDefaults_KubeSchedulerConfiguration(obj *KubeSchedulerConfiguration) {
 | 
				
			|||||||
	if obj.FailureDomains == "" {
 | 
						if obj.FailureDomains == "" {
 | 
				
			||||||
		obj.FailureDomains = api.DefaultFailureDomains
 | 
							obj.FailureDomains = api.DefaultFailureDomains
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if obj.LockObjectNamespace == "" {
 | 
				
			||||||
 | 
							obj.LockObjectNamespace = SchedulerDefaultLockObjectNamespace
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if obj.LockObjectName == "" {
 | 
				
			||||||
 | 
							obj.LockObjectName = SchedulerDefaultLockObjectName
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func SetDefaults_LeaderElectionConfiguration(obj *LeaderElectionConfiguration) {
 | 
					func SetDefaults_LeaderElectionConfiguration(obj *LeaderElectionConfiguration) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -130,6 +130,10 @@ type KubeSchedulerConfiguration struct {
 | 
				
			|||||||
	FailureDomains string `json:"failureDomains"`
 | 
						FailureDomains string `json:"failureDomains"`
 | 
				
			||||||
	// leaderElection defines the configuration of leader election client.
 | 
						// leaderElection defines the configuration of leader election client.
 | 
				
			||||||
	LeaderElection LeaderElectionConfiguration `json:"leaderElection"`
 | 
						LeaderElection LeaderElectionConfiguration `json:"leaderElection"`
 | 
				
			||||||
 | 
						// LockObjectNamespace defines the namespace of the lock object
 | 
				
			||||||
 | 
						LockObjectNamespace string `json:"lockObjectNamespace"`
 | 
				
			||||||
 | 
						// LockObjectName defines the lock object name
 | 
				
			||||||
 | 
						LockObjectName string `json:"lockObjectName"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HairpinMode denotes how the kubelet should configure networking to handle
 | 
					// HairpinMode denotes how the kubelet should configure networking to handle
 | 
				
			||||||
@@ -600,3 +604,11 @@ type KubeletAnonymousAuthentication struct {
 | 
				
			|||||||
	// Anonymous requests have a username of system:anonymous, and a group name of system:unauthenticated.
 | 
						// Anonymous requests have a username of system:anonymous, and a group name of system:unauthenticated.
 | 
				
			||||||
	Enabled *bool `json:"enabled"`
 | 
						Enabled *bool `json:"enabled"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// "kube-system" is the default scheduler lock object namespace
 | 
				
			||||||
 | 
						SchedulerDefaultLockObjectNamespace string = "kube-system"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// "kube-scheduler" is the default scheduler lock object name
 | 
				
			||||||
 | 
						SchedulerDefaultLockObjectName = "kube-scheduler"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,8 @@ func (s *SchedulerServer) AddFlags(fs *pflag.FlagSet) {
 | 
				
			|||||||
	fs.Float32Var(&s.KubeAPIQPS, "kube-api-qps", s.KubeAPIQPS, "QPS to use while talking with kubernetes apiserver")
 | 
						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.Int32Var(&s.KubeAPIBurst, "kube-api-burst", s.KubeAPIBurst, "Burst to use while talking with kubernetes apiserver")
 | 
				
			||||||
	fs.StringVar(&s.SchedulerName, "scheduler-name", s.SchedulerName, "Name of the scheduler, used to select which pods will be processed by this scheduler, based on pod's \"spec.SchedulerName\".")
 | 
						fs.StringVar(&s.SchedulerName, "scheduler-name", s.SchedulerName, "Name of the scheduler, used to select which pods will be processed by this scheduler, based on pod's \"spec.SchedulerName\".")
 | 
				
			||||||
 | 
						fs.StringVar(&s.LockObjectNamespace, "lock-object-namespace", s.LockObjectNamespace, "Define the namespace of the lock object.")
 | 
				
			||||||
 | 
						fs.StringVar(&s.LockObjectName, "lock-object-name", s.LockObjectName, "Define the name of the lock object.")
 | 
				
			||||||
	fs.IntVar(&s.HardPodAffinitySymmetricWeight, "hard-pod-affinity-symmetric-weight", api.DefaultHardPodAffinitySymmetricWeight,
 | 
						fs.IntVar(&s.HardPodAffinitySymmetricWeight, "hard-pod-affinity-symmetric-weight", api.DefaultHardPodAffinitySymmetricWeight,
 | 
				
			||||||
		"RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule corresponding "+
 | 
							"RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule corresponding "+
 | 
				
			||||||
			"to every RequiredDuringScheduling affinity rule. --hard-pod-affinity-symmetric-weight represents the weight of implicit PreferredDuringScheduling affinity rule.")
 | 
								"to every RequiredDuringScheduling affinity rule. --hard-pod-affinity-symmetric-weight represents the weight of implicit PreferredDuringScheduling affinity rule.")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -113,8 +113,8 @@ func Run(s *options.SchedulerServer) error {
 | 
				
			|||||||
	// TODO: enable other lock types
 | 
						// TODO: enable other lock types
 | 
				
			||||||
	rl := &resourcelock.EndpointsLock{
 | 
						rl := &resourcelock.EndpointsLock{
 | 
				
			||||||
		EndpointsMeta: metav1.ObjectMeta{
 | 
							EndpointsMeta: metav1.ObjectMeta{
 | 
				
			||||||
			Namespace: "kube-system",
 | 
								Namespace: s.LockObjectNamespace,
 | 
				
			||||||
			Name:      "kube-scheduler",
 | 
								Name:      s.LockObjectName,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		Client: kubecli,
 | 
							Client: kubecli,
 | 
				
			||||||
		LockConfig: resourcelock.ResourceLockConfig{
 | 
							LockConfig: resourcelock.ResourceLockConfig{
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user