Migrate scheduler, controller-manager and cloud-controller-manager to lease lock.

This commit is contained in:
wojtekt 2020-09-08 08:21:57 +02:00
parent 92d8429651
commit 805c1753cd
6 changed files with 23 additions and 16 deletions

View File

@ -49,7 +49,7 @@ func TestDefaultFlags(t *testing.T) {
}, },
ControllerStartInterval: metav1.Duration{Duration: 0}, ControllerStartInterval: metav1.Duration{Duration: 0},
LeaderElection: componentbaseconfig.LeaderElectionConfiguration{ LeaderElection: componentbaseconfig.LeaderElectionConfiguration{
ResourceLock: "endpointsleases", ResourceLock: "leases",
LeaderElect: true, LeaderElect: true,
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},

View File

@ -310,7 +310,7 @@ profiles:
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },
@ -407,7 +407,7 @@ profiles:
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },
@ -471,7 +471,7 @@ profiles:
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },
@ -510,7 +510,7 @@ profiles:
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },
@ -584,7 +584,7 @@ profiles:
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },
@ -658,7 +658,7 @@ profiles:
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },
@ -710,7 +710,7 @@ profiles:
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },

View File

@ -130,7 +130,10 @@ func RecommendedDefaultGenericControllerManagerConfiguration(obj *kubectrlmgrcon
} }
if len(obj.LeaderElection.ResourceLock) == 0 { if len(obj.LeaderElection.ResourceLock) == 0 {
obj.LeaderElection.ResourceLock = "endpointsleases" // Use lease-based leader election to reduce cost.
// We migrated for EndpointsLease lock in 1.17 and starting in 1.20 we
// migrated to Lease lock.
obj.LeaderElection.ResourceLock = "leases"
} }
// Use the default ClientConnectionConfiguration and LeaderElectionConfiguration options // Use the default ClientConnectionConfiguration and LeaderElectionConfiguration options

View File

@ -109,7 +109,10 @@ func SetDefaults_KubeSchedulerConfiguration(obj *v1beta1.KubeSchedulerConfigurat
} }
if len(obj.LeaderElection.ResourceLock) == 0 { if len(obj.LeaderElection.ResourceLock) == 0 {
obj.LeaderElection.ResourceLock = "endpointsleases" // Use lease-based leader election to reduce cost.
// We migrated for EndpointsLease lock in 1.17 and starting in 1.20 we
// migrated to Lease lock.
obj.LeaderElection.ResourceLock = "leases"
} }
if len(obj.LeaderElection.ResourceNamespace) == 0 { if len(obj.LeaderElection.ResourceNamespace) == 0 {
obj.LeaderElection.ResourceNamespace = v1beta1.SchedulerDefaultLockObjectNamespace obj.LeaderElection.ResourceNamespace = v1beta1.SchedulerDefaultLockObjectNamespace

View File

@ -56,7 +56,7 @@ func TestSchedulerDefaults(t *testing.T) {
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },
@ -96,7 +96,7 @@ func TestSchedulerDefaults(t *testing.T) {
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },
@ -151,7 +151,7 @@ func TestSchedulerDefaults(t *testing.T) {
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },
@ -200,7 +200,7 @@ func TestSchedulerDefaults(t *testing.T) {
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },
@ -235,7 +235,7 @@ func TestSchedulerDefaults(t *testing.T) {
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
ResourceLock: "endpointsleases", ResourceLock: "leases",
ResourceNamespace: "kube-system", ResourceNamespace: "kube-system",
ResourceName: "kube-scheduler", ResourceName: "kube-scheduler",
}, },

View File

@ -44,7 +44,8 @@ func RecommendedDefaultLeaderElectionConfiguration(obj *LeaderElectionConfigurat
obj.RetryPeriod = metav1.Duration{Duration: 2 * time.Second} obj.RetryPeriod = metav1.Duration{Duration: 2 * time.Second}
} }
if obj.ResourceLock == "" { if obj.ResourceLock == "" {
// TODO: Migrate to LeaseLock. // TODO(#80289): Figure out how to migrate to LeaseLock at this point.
// This will most probably require going through EndpointsLease first.
obj.ResourceLock = EndpointsResourceLock obj.ResourceLock = EndpointsResourceLock
} }
if obj.LeaderElect == nil { if obj.LeaderElect == nil {