From 25238441fdbf7383e45c05613ec15aab13a5bcb5 Mon Sep 17 00:00:00 2001 From: David Eads Date: Mon, 15 Jan 2018 14:21:15 -0500 Subject: [PATCH] uniquify resource lock identities --- cmd/cloud-controller-manager/app/BUILD | 1 + cmd/cloud-controller-manager/app/controllermanager.go | 3 +++ cmd/kube-controller-manager/app/BUILD | 1 + cmd/kube-controller-manager/app/controllermanager.go | 3 +++ cmd/kube-scheduler/app/BUILD | 1 + cmd/kube-scheduler/app/server.go | 8 +++++--- 6 files changed, 14 insertions(+), 3 deletions(-) diff --git a/cmd/cloud-controller-manager/app/BUILD b/cmd/cloud-controller-manager/app/BUILD index ff97e0cdd8..57ed9bf050 100644 --- a/cmd/cloud-controller-manager/app/BUILD +++ b/cmd/cloud-controller-manager/app/BUILD @@ -23,6 +23,7 @@ go_library( "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", "//vendor/k8s.io/client-go/informers:go_default_library", diff --git a/cmd/cloud-controller-manager/app/controllermanager.go b/cmd/cloud-controller-manager/app/controllermanager.go index f48c69d4c2..c43a1d8c56 100644 --- a/cmd/cloud-controller-manager/app/controllermanager.go +++ b/cmd/cloud-controller-manager/app/controllermanager.go @@ -33,6 +33,7 @@ import ( "github.com/spf13/cobra" "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apiserver/pkg/server/healthz" "k8s.io/client-go/informers" @@ -169,6 +170,8 @@ func Run(s *options.CloudControllerManagerServer) error { if err != nil { return err } + // add a uniquifier so that two processes on the same host don't accidentally both become active + id = id + "_" + string(uuid.NewUUID()) // Lock required for leader election rl, err := resourcelock.New(s.LeaderElection.ResourceLock, diff --git a/cmd/kube-controller-manager/app/BUILD b/cmd/kube-controller-manager/app/BUILD index 14c11c12d6..779cdb718b 100644 --- a/cmd/kube-controller-manager/app/BUILD +++ b/cmd/kube-controller-manager/app/BUILD @@ -115,6 +115,7 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", diff --git a/cmd/kube-controller-manager/app/controllermanager.go b/cmd/kube-controller-manager/app/controllermanager.go index 407732862a..1c45d16461 100644 --- a/cmd/kube-controller-manager/app/controllermanager.go +++ b/cmd/kube-controller-manager/app/controllermanager.go @@ -63,6 +63,7 @@ import ( "github.com/golang/glog" "github.com/prometheus/client_golang/prometheus" "github.com/spf13/cobra" + "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/kubernetes/pkg/version/verflag" ) @@ -181,6 +182,8 @@ func Run(s *options.CMServer) error { if err != nil { return err } + // add a uniquifier so that two processes on the same host don't accidentally both become active + id = id + "_" + string(uuid.NewUUID()) rl, err := resourcelock.New(s.LeaderElection.ResourceLock, "kube-system", diff --git a/cmd/kube-scheduler/app/BUILD b/cmd/kube-scheduler/app/BUILD index 990d72a0bc..4e2f786dc3 100644 --- a/cmd/kube-scheduler/app/BUILD +++ b/cmd/kube-scheduler/app/BUILD @@ -35,6 +35,7 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", diff --git a/cmd/kube-scheduler/app/server.go b/cmd/kube-scheduler/app/server.go index 0f0e1bf25e..4c3d66ef44 100644 --- a/cmd/kube-scheduler/app/server.go +++ b/cmd/kube-scheduler/app/server.go @@ -35,6 +35,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/serializer" utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apiserver/pkg/server/healthz" utilfeature "k8s.io/apiserver/pkg/util/feature" @@ -61,12 +62,11 @@ import ( "k8s.io/kubernetes/pkg/scheduler/algorithmprovider" schedulerapi "k8s.io/kubernetes/pkg/scheduler/api" latestschedulerapi "k8s.io/kubernetes/pkg/scheduler/api/latest" + "k8s.io/kubernetes/pkg/scheduler/factory" "k8s.io/kubernetes/pkg/util/configz" "k8s.io/kubernetes/pkg/version" "k8s.io/kubernetes/pkg/version/verflag" - "k8s.io/kubernetes/pkg/scheduler/factory" - "github.com/golang/glog" "github.com/prometheus/client_golang/prometheus" "github.com/spf13/cobra" @@ -436,13 +436,15 @@ func makeLeaderElectionConfig(config componentconfig.KubeSchedulerLeaderElection if err != nil { return nil, fmt.Errorf("unable to get hostname: %v", err) } + // add a uniquifier so that two processes on the same host don't accidentally both become active + id := hostname + "_" + string(uuid.NewUUID()) rl, err := resourcelock.New(config.ResourceLock, config.LockObjectNamespace, config.LockObjectName, client.CoreV1(), resourcelock.ResourceLockConfig{ - Identity: hostname, + Identity: id, EventRecorder: recorder, }) if err != nil {