From a3af8e1236b5d57c6dd5fd8329c0304a533eaa97 Mon Sep 17 00:00:00 2001 From: hzxuzhonghu Date: Thu, 4 Jan 2018 17:37:56 +0800 Subject: [PATCH 1/2] remove useless service watch in APIServiceRegistrationController --- .../pkg/apiserver/apiserver.go | 2 +- .../pkg/apiserver/apiservice_controller.go | 69 +------------------ 2 files changed, 3 insertions(+), 68 deletions(-) diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go index f9188609ea..2c805bc1f1 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go @@ -201,7 +201,7 @@ func (c completedConfig) NewWithDelegate(delegationTarget genericapiserver.Deleg s.GenericAPIServer.Handler.NonGoRestfulMux.Handle("/apis", apisHandler) s.GenericAPIServer.Handler.NonGoRestfulMux.UnlistedHandle("/apis/", apisHandler) - apiserviceRegistrationController := NewAPIServiceRegistrationController(informerFactory.Apiregistration().InternalVersion().APIServices(), c.GenericConfig.SharedInformerFactory.Core().V1().Services(), s) + apiserviceRegistrationController := NewAPIServiceRegistrationController(informerFactory.Apiregistration().InternalVersion().APIServices(), s) availableController := statuscontrollers.NewAvailableConditionController( informerFactory.Apiregistration().InternalVersion().APIServices(), c.GenericConfig.SharedInformerFactory.Core().V1().Services(), diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiservice_controller.go b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiservice_controller.go index 2ed0a4b529..25bfca9af6 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiservice_controller.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiservice_controller.go @@ -22,13 +22,9 @@ import ( "github.com/golang/glog" - "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/labels" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/wait" - v1informers "k8s.io/client-go/informers/core/v1" - v1listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" @@ -49,23 +45,17 @@ type APIServiceRegistrationController struct { apiServiceLister listers.APIServiceLister apiServiceSynced cache.InformerSynced - // serviceLister is used to get the IP to create the transport for - serviceLister v1listers.ServiceLister - servicesSynced cache.InformerSynced - // To allow injection for testing. syncFn func(key string) error queue workqueue.RateLimitingInterface } -func NewAPIServiceRegistrationController(apiServiceInformer informers.APIServiceInformer, serviceInformer v1informers.ServiceInformer, apiHandlerManager APIHandlerManager) *APIServiceRegistrationController { +func NewAPIServiceRegistrationController(apiServiceInformer informers.APIServiceInformer, apiHandlerManager APIHandlerManager) *APIServiceRegistrationController { c := &APIServiceRegistrationController{ apiHandlerManager: apiHandlerManager, apiServiceLister: apiServiceInformer.Lister(), apiServiceSynced: apiServiceInformer.Informer().HasSynced, - serviceLister: serviceInformer.Lister(), - servicesSynced: serviceInformer.Informer().HasSynced, queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "APIServiceRegistrationController"), } @@ -75,12 +65,6 @@ func NewAPIServiceRegistrationController(apiServiceInformer informers.APIService DeleteFunc: c.deleteAPIService, }) - serviceInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ - AddFunc: c.addService, - UpdateFunc: c.updateService, - DeleteFunc: c.deleteService, - }) - c.syncFn = c.sync return c @@ -112,7 +96,7 @@ func (c *APIServiceRegistrationController) Run(stopCh <-chan struct{}) { glog.Infof("Starting APIServiceRegistrationController") defer glog.Infof("Shutting down APIServiceRegistrationController") - if !controllers.WaitForCacheSync("APIServiceRegistrationController", stopCh, c.apiServiceSynced, c.servicesSynced) { + if !controllers.WaitForCacheSync("APIServiceRegistrationController", stopCh, c.apiServiceSynced) { return } @@ -187,52 +171,3 @@ func (c *APIServiceRegistrationController) deleteAPIService(obj interface{}) { glog.V(4).Infof("Deleting %q", castObj.Name) c.enqueue(castObj) } - -// there aren't very many apiservices, just check them all. -func (c *APIServiceRegistrationController) getAPIServicesFor(service *v1.Service) []*apiregistration.APIService { - var ret []*apiregistration.APIService - apiServiceList, _ := c.apiServiceLister.List(labels.Everything()) - for _, apiService := range apiServiceList { - if apiService.Spec.Service == nil { - continue - } - if apiService.Spec.Service.Namespace == service.Namespace && apiService.Spec.Service.Name == service.Name { - ret = append(ret, apiService) - } - } - - return ret -} - -// TODO, think of a way to avoid checking on every service manipulation - -func (c *APIServiceRegistrationController) addService(obj interface{}) { - for _, apiService := range c.getAPIServicesFor(obj.(*v1.Service)) { - c.enqueue(apiService) - } -} - -func (c *APIServiceRegistrationController) updateService(obj, _ interface{}) { - for _, apiService := range c.getAPIServicesFor(obj.(*v1.Service)) { - c.enqueue(apiService) - } -} - -func (c *APIServiceRegistrationController) deleteService(obj interface{}) { - castObj, ok := obj.(*v1.Service) - if !ok { - tombstone, ok := obj.(cache.DeletedFinalStateUnknown) - if !ok { - glog.Errorf("Couldn't get object from tombstone %#v", obj) - return - } - castObj, ok = tombstone.Obj.(*v1.Service) - if !ok { - glog.Errorf("Tombstone contained object that is not expected %#v", obj) - return - } - } - for _, apiService := range c.getAPIServicesFor(castObj) { - c.enqueue(apiService) - } -} From 2c438a8f21aead73e65d4b84103676d4b61f2a20 Mon Sep 17 00:00:00 2001 From: hzxuzhonghu Date: Fri, 5 Jan 2018 10:36:40 +0800 Subject: [PATCH 2/2] update bazel --- staging/src/k8s.io/kube-aggregator/pkg/apiserver/BUILD | 2 -- 1 file changed, 2 deletions(-) diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/BUILD b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/BUILD index 41f11c57c3..c79678ff44 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/BUILD +++ b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/BUILD @@ -41,7 +41,6 @@ go_library( importpath = "k8s.io/kube-aggregator/pkg/apiserver", deps = [ "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", @@ -64,7 +63,6 @@ go_library( "//vendor/k8s.io/apiserver/pkg/server:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/proxy:go_default_library", - "//vendor/k8s.io/client-go/informers/core/v1:go_default_library", "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", "//vendor/k8s.io/client-go/pkg/version:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library",