Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
a2248a2b
Commit
a2248a2b
authored
May 05, 2017
by
Jamie Hannaford
Committed by
Timothy St. Clair
May 15, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add lock type flags for controller-manager leadership election
parent
5a1ec9bf
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
53 additions
and
15 deletions
+53
-15
controllermanager.go
cmd/kube-controller-manager/app/controllermanager.go
+8
-13
types.go
pkg/apis/componentconfig/types.go
+3
-0
types.go
pkg/apis/componentconfig/v1alpha1/types.go
+3
-0
zz_generated.conversion.go
pkg/apis/componentconfig/v1alpha1/zz_generated.conversion.go
+2
-0
BUILD
pkg/client/leaderelection/BUILD
+1
-0
leaderelection.go
pkg/client/leaderelection/leaderelection.go
+36
-2
No files found.
cmd/kube-controller-manager/app/controllermanager.go
View file @
a2248a2b
...
@@ -32,7 +32,6 @@ import (
...
@@ -32,7 +32,6 @@ import (
"strconv"
"strconv"
"time"
"time"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/util/wait"
...
@@ -192,21 +191,17 @@ func Run(s *options.CMServer) error {
...
@@ -192,21 +191,17 @@ func Run(s *options.CMServer) error {
return
err
return
err
}
}
// TODO: enable other lock types
rlc
:=
resourcelock
.
ResourceLockConfig
{
rl
:=
resourcelock
.
EndpointsLock
{
Identity
:
id
,
EndpointsMeta
:
metav1
.
ObjectMeta
{
EventRecorder
:
recorder
,
Namespace
:
"kube-system"
,
}
Name
:
"kube-controller-manager"
,
rl
,
err
:=
leaderelection
.
GetLock
(
s
.
LeaderElection
,
*
leaderElectionClient
,
rlc
)
},
if
err
!=
nil
{
Client
:
leaderElectionClient
,
return
err
LockConfig
:
resourcelock
.
ResourceLockConfig
{
Identity
:
id
,
EventRecorder
:
recorder
,
},
}
}
leaderelection
.
RunOrDie
(
leaderelection
.
LeaderElectionConfig
{
leaderelection
.
RunOrDie
(
leaderelection
.
LeaderElectionConfig
{
Lock
:
&
rl
,
Lock
:
rl
,
LeaseDuration
:
s
.
LeaderElection
.
LeaseDuration
.
Duration
,
LeaseDuration
:
s
.
LeaderElection
.
LeaseDuration
.
Duration
,
RenewDeadline
:
s
.
LeaderElection
.
RenewDeadline
.
Duration
,
RenewDeadline
:
s
.
LeaderElection
.
RenewDeadline
.
Duration
,
RetryPeriod
:
s
.
LeaderElection
.
RetryPeriod
.
Duration
,
RetryPeriod
:
s
.
LeaderElection
.
RetryPeriod
.
Duration
,
...
...
pkg/apis/componentconfig/types.go
View file @
a2248a2b
...
@@ -685,6 +685,9 @@ type LeaderElectionConfiguration struct {
...
@@ -685,6 +685,9 @@ type LeaderElectionConfiguration struct {
// acquisition and renewal of a leadership. This is only applicable if
// acquisition and renewal of a leadership. This is only applicable if
// leader election is enabled.
// leader election is enabled.
RetryPeriod
metav1
.
Duration
RetryPeriod
metav1
.
Duration
// LockType indicates the type of locking to use for leadership election.
// Supported options are `endpoints` (default) and `configmap`.
LockType
string
}
}
type
KubeControllerManagerConfiguration
struct
{
type
KubeControllerManagerConfiguration
struct
{
...
...
pkg/apis/componentconfig/v1alpha1/types.go
View file @
a2248a2b
...
@@ -233,6 +233,9 @@ type LeaderElectionConfiguration struct {
...
@@ -233,6 +233,9 @@ type LeaderElectionConfiguration struct {
// acquisition and renewal of a leadership. This is only applicable if
// acquisition and renewal of a leadership. This is only applicable if
// leader election is enabled.
// leader election is enabled.
RetryPeriod
metav1
.
Duration
`json:"retryPeriod"`
RetryPeriod
metav1
.
Duration
`json:"retryPeriod"`
// LockType indicates the type of locking to use for leadership election.
// Supported options are `endpoints` (default) and `configmap`.
LockType
string
}
}
// A configuration field should go in KubeletFlags instead of KubeletConfiguration if any of these are true:
// A configuration field should go in KubeletFlags instead of KubeletConfiguration if any of these are true:
...
...
pkg/apis/componentconfig/v1alpha1/zz_generated.conversion.go
View file @
a2248a2b
...
@@ -814,6 +814,7 @@ func autoConvert_v1alpha1_LeaderElectionConfiguration_To_componentconfig_LeaderE
...
@@ -814,6 +814,7 @@ func autoConvert_v1alpha1_LeaderElectionConfiguration_To_componentconfig_LeaderE
out
.
LeaseDuration
=
in
.
LeaseDuration
out
.
LeaseDuration
=
in
.
LeaseDuration
out
.
RenewDeadline
=
in
.
RenewDeadline
out
.
RenewDeadline
=
in
.
RenewDeadline
out
.
RetryPeriod
=
in
.
RetryPeriod
out
.
RetryPeriod
=
in
.
RetryPeriod
out
.
LockType
=
in
.
LockType
return
nil
return
nil
}
}
...
@@ -829,6 +830,7 @@ func autoConvert_componentconfig_LeaderElectionConfiguration_To_v1alpha1_LeaderE
...
@@ -829,6 +830,7 @@ func autoConvert_componentconfig_LeaderElectionConfiguration_To_v1alpha1_LeaderE
out
.
LeaseDuration
=
in
.
LeaseDuration
out
.
LeaseDuration
=
in
.
LeaseDuration
out
.
RenewDeadline
=
in
.
RenewDeadline
out
.
RenewDeadline
=
in
.
RenewDeadline
out
.
RetryPeriod
=
in
.
RetryPeriod
out
.
RetryPeriod
=
in
.
RetryPeriod
out
.
LockType
=
in
.
LockType
return
nil
return
nil
}
}
...
...
pkg/client/leaderelection/BUILD
View file @
a2248a2b
...
@@ -14,6 +14,7 @@ go_library(
...
@@ -14,6 +14,7 @@ go_library(
tags = ["automanaged"],
tags = ["automanaged"],
deps = [
deps = [
"//pkg/apis/componentconfig:go_default_library",
"//pkg/apis/componentconfig:go_default_library",
"//pkg/client/clientset_generated/clientset:go_default_library",
"//pkg/client/leaderelection/resourcelock:go_default_library",
"//pkg/client/leaderelection/resourcelock:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
...
...
pkg/client/leaderelection/leaderelection.go
View file @
a2248a2b
...
@@ -53,11 +53,12 @@ import (
...
@@ -53,11 +53,12 @@ import (
"reflect"
"reflect"
"time"
"time"
"k8s.io/apimachinery/pkg/api/errors"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/kubernetes/pkg/apis/componentconfig"
"k8s.io/kubernetes/pkg/apis/componentconfig"
cs
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
rl
"k8s.io/kubernetes/pkg/client/leaderelection/resourcelock"
rl
"k8s.io/kubernetes/pkg/client/leaderelection/resourcelock"
"github.com/golang/glog"
"github.com/golang/glog"
...
@@ -69,6 +70,9 @@ const (
...
@@ -69,6 +70,9 @@ const (
DefaultLeaseDuration
=
15
*
time
.
Second
DefaultLeaseDuration
=
15
*
time
.
Second
DefaultRenewDeadline
=
10
*
time
.
Second
DefaultRenewDeadline
=
10
*
time
.
Second
DefaultRetryPeriod
=
2
*
time
.
Second
DefaultRetryPeriod
=
2
*
time
.
Second
LockTypeEndpoints
=
"endpoints"
LockTypeConfigMaps
=
"configmaps"
)
)
// NewLeadereElector creates a LeaderElector from a LeaderElecitionConfig
// NewLeadereElector creates a LeaderElector from a LeaderElecitionConfig
...
@@ -225,7 +229,7 @@ func (le *LeaderElector) tryAcquireOrRenew() bool {
...
@@ -225,7 +229,7 @@ func (le *LeaderElector) tryAcquireOrRenew() bool {
// 1. obtain or create the ElectionRecord
// 1. obtain or create the ElectionRecord
oldLeaderElectionRecord
,
err
:=
le
.
config
.
Lock
.
Get
()
oldLeaderElectionRecord
,
err
:=
le
.
config
.
Lock
.
Get
()
if
err
!=
nil
{
if
err
!=
nil
{
if
!
errors
.
IsNotFound
(
err
)
{
if
!
api
errors
.
IsNotFound
(
err
)
{
glog
.
Errorf
(
"error retrieving resource lock %v: %v"
,
le
.
config
.
Lock
.
Describe
(),
err
)
glog
.
Errorf
(
"error retrieving resource lock %v: %v"
,
le
.
config
.
Lock
.
Describe
(),
err
)
return
false
return
false
}
}
...
@@ -284,6 +288,7 @@ func DefaultLeaderElectionConfiguration() componentconfig.LeaderElectionConfigur
...
@@ -284,6 +288,7 @@ func DefaultLeaderElectionConfiguration() componentconfig.LeaderElectionConfigur
LeaseDuration
:
metav1
.
Duration
{
Duration
:
DefaultLeaseDuration
},
LeaseDuration
:
metav1
.
Duration
{
Duration
:
DefaultLeaseDuration
},
RenewDeadline
:
metav1
.
Duration
{
Duration
:
DefaultRenewDeadline
},
RenewDeadline
:
metav1
.
Duration
{
Duration
:
DefaultRenewDeadline
},
RetryPeriod
:
metav1
.
Duration
{
Duration
:
DefaultRetryPeriod
},
RetryPeriod
:
metav1
.
Duration
{
Duration
:
DefaultRetryPeriod
},
LockType
:
LockTypeEndpoints
,
}
}
}
}
...
@@ -306,4 +311,33 @@ func BindFlags(l *componentconfig.LeaderElectionConfiguration, fs *pflag.FlagSet
...
@@ -306,4 +311,33 @@ func BindFlags(l *componentconfig.LeaderElectionConfiguration, fs *pflag.FlagSet
fs
.
DurationVar
(
&
l
.
RetryPeriod
.
Duration
,
"leader-elect-retry-period"
,
l
.
RetryPeriod
.
Duration
,
""
+
fs
.
DurationVar
(
&
l
.
RetryPeriod
.
Duration
,
"leader-elect-retry-period"
,
l
.
RetryPeriod
.
Duration
,
""
+
"The duration the clients should wait between attempting acquisition and renewal "
+
"The duration the clients should wait between attempting acquisition and renewal "
+
"of a leadership. This is only applicable if leader election is enabled."
)
"of a leadership. This is only applicable if leader election is enabled."
)
fs
.
StringVar
(
&
l
.
LockType
,
"leader-elect-lock-type"
,
l
.
LockType
,
fmt
.
Sprintf
(
""
+
"Indicates the type of locking to use for leadership election. Supported options "
+
"are `%s` (default) and `%s`."
,
LockTypeConfigMaps
,
LockTypeEndpoints
))
}
func
GetLock
(
l
componentconfig
.
LeaderElectionConfiguration
,
client
cs
.
Clientset
,
rlc
rl
.
ResourceLockConfig
)
(
rl
.
Interface
,
error
)
{
name
:=
"kube-controller-manager"
switch
l
.
LockType
{
case
LockTypeEndpoints
:
return
&
rl
.
EndpointsLock
{
EndpointsMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
name
,
},
Client
:
client
,
LockConfig
:
rlc
,
},
nil
case
LockTypeConfigMaps
:
return
&
rl
.
ConfigMapLock
{
ConfigMapMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
name
,
},
Client
:
client
,
LockConfig
:
rlc
,
},
nil
default
:
return
nil
,
fmt
.
Errorf
(
"Invalid lock-type provided: %s. Supported types are `%s` and `%s`"
,
l
.
LockType
,
LockTypeConfigMaps
,
LockTypeEndpoints
)
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment