mirror of https://github.com/k3s-io/k3s
Merge pull request #59440 from vmware/rohitj-upstream
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Use SetInformers method to register for Node events. (#449) Till 1.9.2 Kubernetes release vSphere Cloud Provider needs a separate service account which is not needed. **What this PR does / why we need it**: In this fix, vSphere CLoud Provider is now implementing SetInformer API to get the required NodeInformer. With this change vSphere Cloud Provider no more requires separate service account for listening NodeEvents. **Which issue(s) this PR fixes** Fixes #58747 **Special notes for your reviewer**: VMware vSphere Cloud Provide internal change **Release note**: ```release-note With this fix, separate service account is not needed for vSphere Cloud Provider for listening node events. ```pull/6/head
commit
6535c955bf
|
@ -27,7 +27,6 @@ go_library(
|
|||
"//vendor/gopkg.in/gcfg.v1:go_default_library",
|
||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||
"//vendor/k8s.io/client-go/informers:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
|
||||
],
|
||||
|
|
|
@ -35,7 +35,6 @@ import (
|
|||
"golang.org/x/net/context"
|
||||
"k8s.io/api/core/v1"
|
||||
k8stypes "k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
"k8s.io/client-go/informers"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
||||
|
@ -210,21 +209,23 @@ func init() {
|
|||
|
||||
// Initialize passes a Kubernetes clientBuilder interface to the cloud provider
|
||||
func (vs *VSphere) Initialize(clientBuilder controller.ControllerClientBuilder) {
|
||||
}
|
||||
|
||||
// Initialize Node Informers
|
||||
func (vs *VSphere) SetInformers(informerFactory informers.SharedInformerFactory) {
|
||||
if vs.cfg == nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Only on controller node it is required to register listeners.
|
||||
// Register callbacks for node updates
|
||||
client := clientBuilder.ClientOrDie("vsphere-cloud-provider")
|
||||
factory := informers.NewSharedInformerFactory(client, 5*time.Minute)
|
||||
nodeInformer := factory.Core().V1().Nodes()
|
||||
nodeInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
|
||||
glog.V(4).Infof("Setting up node informers for vSphere Cloud Provider")
|
||||
nodeInformer := informerFactory.Core().V1().Nodes().Informer()
|
||||
nodeInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
|
||||
AddFunc: vs.NodeAdded,
|
||||
DeleteFunc: vs.NodeDeleted,
|
||||
})
|
||||
go nodeInformer.Informer().Run(wait.NeverStop)
|
||||
glog.V(4).Infof("vSphere cloud provider initialized")
|
||||
glog.V(4).Infof("Node informers in vSphere cloud provider initialized")
|
||||
}
|
||||
|
||||
// Creates new worker node interface and returns
|
||||
|
|
Loading…
Reference in New Issue