From d2cf85856081ad8b9c594d144a8451854e31f195 Mon Sep 17 00:00:00 2001 From: magicwang-cn Date: Fri, 5 Feb 2016 15:47:27 +0800 Subject: [PATCH] make watch cache sizes configuratable of kube-apiserver --- cmd/kube-apiserver/app/options/options.go | 2 + cmd/kube-apiserver/app/server.go | 7 ++ docs/admin/kube-apiserver.md | 3 +- hack/verify-flags/known-flags.txt | 1 + pkg/registry/cachesize/cachesize.go | 95 +++++++++++++++++++ pkg/registry/controller/etcd/etcd.go | 3 +- pkg/registry/daemonset/etcd/etcd.go | 3 +- pkg/registry/deployment/etcd/etcd.go | 3 +- pkg/registry/endpoint/etcd/etcd.go | 3 +- .../horizontalpodautoscaler/etcd/etcd.go | 3 +- pkg/registry/ingress/etcd/etcd.go | 3 +- pkg/registry/job/etcd/etcd.go | 3 +- pkg/registry/limitrange/etcd/etcd.go | 3 +- pkg/registry/namespace/etcd/etcd.go | 3 +- pkg/registry/node/etcd/etcd.go | 3 +- pkg/registry/persistentvolume/etcd/etcd.go | 3 +- .../persistentvolumeclaim/etcd/etcd.go | 3 +- pkg/registry/pod/etcd/etcd.go | 3 +- pkg/registry/podtemplate/etcd/etcd.go | 3 +- pkg/registry/resourcequota/etcd/etcd.go | 3 +- pkg/registry/secret/etcd/etcd.go | 3 +- pkg/registry/service/etcd/etcd.go | 3 +- pkg/registry/serviceaccount/etcd/etcd.go | 3 +- 23 files changed, 143 insertions(+), 19 deletions(-) create mode 100644 pkg/registry/cachesize/cachesize.go diff --git a/cmd/kube-apiserver/app/options/options.go b/cmd/kube-apiserver/app/options/options.go index 1ddf0071763..3aacc8b0624 100644 --- a/cmd/kube-apiserver/app/options/options.go +++ b/cmd/kube-apiserver/app/options/options.go @@ -80,6 +80,7 @@ type APIServer struct { ServiceNodePortRange utilnet.PortRange StorageVersions string TokenAuthFile string + WatchCacheSizes []string } // NewAPIServer creates a new APIServer object with default parameters @@ -208,4 +209,5 @@ func (s *APIServer) AddFlags(fs *pflag.FlagSet) { fs.IntVar(&s.KubernetesServiceNodePort, "kubernetes-service-node-port", 0, "If non-zero, the Kubernetes master service (which apiserver creates/maintains) will be of type NodePort, using this as the value of the port. If zero, the Kubernetes master service will be of type ClusterIP.") // TODO: delete this flag as soon as we identify and fix all clients that send malformed updates, like #14126. fs.BoolVar(&validation.RepairMalformedUpdates, "repair-malformed-updates", true, "If true, server will do its best to fix the update request to pass the validation, e.g., setting empty UID in update request to its existing value. This flag can be turned off after we fix all the clients that send malformed updates.") + fs.StringSliceVar(&s.WatchCacheSizes, "watch-cache-sizes", s.WatchCacheSizes, "List of watch cache sizes for every resource (pods, nodes, etc.), comma separated. The individual override format: resource#size, where size is a number. It takes effect when watch-cache is enabled.") } diff --git a/cmd/kube-apiserver/app/server.go b/cmd/kube-apiserver/app/server.go index ff3e00d6c1c..c20ec847180 100644 --- a/cmd/kube-apiserver/app/server.go +++ b/cmd/kube-apiserver/app/server.go @@ -49,6 +49,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver" kubeletclient "k8s.io/kubernetes/pkg/kubelet/client" "k8s.io/kubernetes/pkg/master" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/serviceaccount" "k8s.io/kubernetes/pkg/storage" @@ -401,10 +402,16 @@ func Run(s *options.APIServer) error { Tunneler: tunneler, } + + if s.EnableWatchCache { + cachesize.SetWatchCacheSizes(s.WatchCacheSizes) + } + m, err := master.New(config) if err != nil { return err } + m.Run(s.ServerRunOptions) return nil } diff --git a/docs/admin/kube-apiserver.md b/docs/admin/kube-apiserver.md index e9a9f171520..2f37e6403b3 100644 --- a/docs/admin/kube-apiserver.md +++ b/docs/admin/kube-apiserver.md @@ -106,9 +106,10 @@ kube-apiserver --tls-private-key-file="": File containing x509 private key matching --tls-cert-file. --token-auth-file="": If set, the file that will be used to secure the secure port of the API server via token authentication. --watch-cache[=true]: Enable watch caching in the apiserver + --watch-cache-sizes=[]: List of watch cache sizes for every resource (pods, nodes, etc.), comma separated. The individual override format: resource#size, where size is a number. It takes effect when watch-cache is enabled. ``` -###### Auto generated by spf13/cobra on 26-Jan-2016 +###### Auto generated by spf13/cobra on 5-Feb-2016 diff --git a/hack/verify-flags/known-flags.txt b/hack/verify-flags/known-flags.txt index c31c808c6bf..d8ca4b41ecc 100644 --- a/hack/verify-flags/known-flags.txt +++ b/hack/verify-flags/known-flags.txt @@ -372,3 +372,4 @@ leader-elect leader-elect-lease-duration leader-elect-renew-deadline leader-elect-retry-period +watch-cache-sizes diff --git a/pkg/registry/cachesize/cachesize.go b/pkg/registry/cachesize/cachesize.go new file mode 100644 index 00000000000..2261ba09fed --- /dev/null +++ b/pkg/registry/cachesize/cachesize.go @@ -0,0 +1,95 @@ +/* +Copyright 2014 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +//use for --watch-cache-sizes param of kube-apiserver +//make watch cache size of resources configurable +package cachesize + +import ( + "strconv" + "strings" + + "github.com/golang/glog" +) + +type Resource string + +const ( + Controllers Resource = "controllers" + Daemonsets Resource = "daemonsets" + Deployments Resource = "deployments" + Endpoints Resource = "endpoints" + HorizontalPodAutoscalers Resource = "horizontalpodautoscalers" + Ingress Resource = "ingress" + Jobs Resource = "jobs" + LimitRanges Resource = "limitranges" + Namespaces Resource = "namespaces" + Nodes Resource = "nodes" + PersistentVolumes Resource = "persistentvolumes" + PersistentVolumeClaims Resource = "persistentvolumeclaims" + Pods Resource = "pods" + PodTemplates Resource = "podtemplates" + ResourceQuotas Resource = "resourcequotas" + Secrets Resource = "secrets" + ServiceAccounts Resource = "serviceaccounts" + Services Resource = "services" +) + +var watchCacheSizes map[Resource]int + +func init() { + watchCacheSizes = make(map[Resource]int) + watchCacheSizes[Controllers] = 100 + watchCacheSizes[Daemonsets] = 100 + watchCacheSizes[Deployments] = 100 + watchCacheSizes[Endpoints] = 1000 + watchCacheSizes[HorizontalPodAutoscalers] = 100 + watchCacheSizes[Ingress] = 100 + watchCacheSizes[Jobs] = 100 + watchCacheSizes[LimitRanges] = 100 + watchCacheSizes[Namespaces] = 100 + watchCacheSizes[Nodes] = 1000 + watchCacheSizes[PersistentVolumes] = 100 + watchCacheSizes[PersistentVolumeClaims] = 100 + watchCacheSizes[Pods] = 1000 + watchCacheSizes[PodTemplates] = 100 + watchCacheSizes[ResourceQuotas] = 100 + watchCacheSizes[Secrets] = 100 + watchCacheSizes[ServiceAccounts] = 100 + watchCacheSizes[Services] = 100 +} + +func SetWatchCacheSizes(cacheSizes []string) { + for _, c := range cacheSizes { + tokens := strings.Split(c, "#") + if len(tokens) != 2 { + glog.Errorf("invalid value of watch cache capabilities: %s", c) + continue + } + + size, err := strconv.Atoi(tokens[1]) + if err != nil { + glog.Errorf("invalid size of watch cache capabilities: %s", c) + continue + } + + watchCacheSizes[Resource(strings.ToLower(tokens[0]))] = size + } +} + +func GetWatchCacheSizeByResource(resource Resource) int { + return watchCacheSizes[resource] +} diff --git a/pkg/registry/controller/etcd/etcd.go b/pkg/registry/controller/etcd/etcd.go index f3d2864207a..38ed7e23452 100644 --- a/pkg/registry/controller/etcd/etcd.go +++ b/pkg/registry/controller/etcd/etcd.go @@ -20,6 +20,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/controller" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" @@ -37,7 +38,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &api.ReplicationControllerList{} } storageInterface := storageDecorator( - s, 100, &api.ReplicationController{}, prefix, controller.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Controllers), &api.ReplicationController{}, prefix, controller.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.ReplicationController{} }, diff --git a/pkg/registry/daemonset/etcd/etcd.go b/pkg/registry/daemonset/etcd/etcd.go index 0c8ea963854..bde8d555af8 100644 --- a/pkg/registry/daemonset/etcd/etcd.go +++ b/pkg/registry/daemonset/etcd/etcd.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/daemonset" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" @@ -39,7 +40,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &extensions.DaemonSetList{} } storageInterface := storageDecorator( - s, 100, &extensions.DaemonSet{}, prefix, daemonset.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Daemonsets), &extensions.DaemonSet{}, prefix, daemonset.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &extensions.DaemonSet{} }, diff --git a/pkg/registry/deployment/etcd/etcd.go b/pkg/registry/deployment/etcd/etcd.go index 6d603f6c53f..f72f79a17ec 100644 --- a/pkg/registry/deployment/etcd/etcd.go +++ b/pkg/registry/deployment/etcd/etcd.go @@ -27,6 +27,7 @@ import ( extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/deployment" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" @@ -64,7 +65,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &extensions.DeploymentList{} } storageInterface := storageDecorator( - s, 100, &extensions.Deployment{}, prefix, deployment.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Deployments), &extensions.Deployment{}, prefix, deployment.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &extensions.Deployment{} }, diff --git a/pkg/registry/endpoint/etcd/etcd.go b/pkg/registry/endpoint/etcd/etcd.go index 4dc899225cd..0b7e4f7c064 100644 --- a/pkg/registry/endpoint/etcd/etcd.go +++ b/pkg/registry/endpoint/etcd/etcd.go @@ -20,6 +20,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/endpoint" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" @@ -37,7 +38,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *RE newListFunc := func() runtime.Object { return &api.EndpointsList{} } storageInterface := storageDecorator( - s, 1000, &api.Endpoints{}, prefix, endpoint.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Endpoints), &api.Endpoints{}, prefix, endpoint.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.Endpoints{} }, diff --git a/pkg/registry/horizontalpodautoscaler/etcd/etcd.go b/pkg/registry/horizontalpodautoscaler/etcd/etcd.go index cb0873438c3..3686266f32d 100644 --- a/pkg/registry/horizontalpodautoscaler/etcd/etcd.go +++ b/pkg/registry/horizontalpodautoscaler/etcd/etcd.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/horizontalpodautoscaler" @@ -38,7 +39,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &extensions.HorizontalPodAutoscalerList{} } storageInterface := storageDecorator( - s, 100, &extensions.HorizontalPodAutoscaler{}, prefix, horizontalpodautoscaler.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.HorizontalPodAutoscalers), &extensions.HorizontalPodAutoscaler{}, prefix, horizontalpodautoscaler.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &extensions.HorizontalPodAutoscaler{} }, diff --git a/pkg/registry/ingress/etcd/etcd.go b/pkg/registry/ingress/etcd/etcd.go index d01d35e53fa..5932b09cd51 100644 --- a/pkg/registry/ingress/etcd/etcd.go +++ b/pkg/registry/ingress/etcd/etcd.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" ingress "k8s.io/kubernetes/pkg/registry/ingress" @@ -39,7 +40,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &extensions.IngressList{} } storageInterface := storageDecorator( - s, 100, &extensions.Ingress{}, prefix, ingress.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Ingress), &extensions.Ingress{}, prefix, ingress.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &extensions.Ingress{} }, diff --git a/pkg/registry/job/etcd/etcd.go b/pkg/registry/job/etcd/etcd.go index bc15425fb1e..fbf3a0d7a39 100644 --- a/pkg/registry/job/etcd/etcd.go +++ b/pkg/registry/job/etcd/etcd.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/job" @@ -39,7 +40,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &extensions.JobList{} } storageInterface := storageDecorator( - s, 100, &extensions.Job{}, prefix, job.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Jobs), &extensions.Job{}, prefix, job.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &extensions.Job{} }, diff --git a/pkg/registry/limitrange/etcd/etcd.go b/pkg/registry/limitrange/etcd/etcd.go index f422c0037a3..f42ee56ddc9 100644 --- a/pkg/registry/limitrange/etcd/etcd.go +++ b/pkg/registry/limitrange/etcd/etcd.go @@ -20,6 +20,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/limitrange" @@ -37,7 +38,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *RE newListFunc := func() runtime.Object { return &api.LimitRangeList{} } storageInterface := storageDecorator( - s, 100, &api.LimitRange{}, prefix, limitrange.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.LimitRanges), &api.LimitRange{}, prefix, limitrange.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.LimitRange{} }, diff --git a/pkg/registry/namespace/etcd/etcd.go b/pkg/registry/namespace/etcd/etcd.go index 231520d5df7..deb161c4242 100644 --- a/pkg/registry/namespace/etcd/etcd.go +++ b/pkg/registry/namespace/etcd/etcd.go @@ -24,6 +24,7 @@ import ( "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/namespace" @@ -53,7 +54,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &api.NamespaceList{} } storageInterface := storageDecorator( - s, 100, &api.Namespace{}, prefix, namespace.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Namespaces), &api.Namespace{}, prefix, namespace.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.Namespace{} }, diff --git a/pkg/registry/node/etcd/etcd.go b/pkg/registry/node/etcd/etcd.go index bfa10bc3bdd..339f575ece1 100644 --- a/pkg/registry/node/etcd/etcd.go +++ b/pkg/registry/node/etcd/etcd.go @@ -24,6 +24,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/rest" "k8s.io/kubernetes/pkg/kubelet/client" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/node" @@ -57,7 +58,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator, con newListFunc := func() runtime.Object { return &api.NodeList{} } storageInterface := storageDecorator( - s, 1000, &api.Node{}, prefix, node.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Nodes), &api.Node{}, prefix, node.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.Node{} }, diff --git a/pkg/registry/persistentvolume/etcd/etcd.go b/pkg/registry/persistentvolume/etcd/etcd.go index 0a8e9dccd98..60136ddefa8 100644 --- a/pkg/registry/persistentvolume/etcd/etcd.go +++ b/pkg/registry/persistentvolume/etcd/etcd.go @@ -20,6 +20,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/persistentvolume" @@ -37,7 +38,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &api.PersistentVolumeList{} } storageInterface := storageDecorator( - s, 100, &api.PersistentVolume{}, prefix, persistentvolume.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.PersistentVolumes), &api.PersistentVolume{}, prefix, persistentvolume.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.PersistentVolume{} }, diff --git a/pkg/registry/persistentvolumeclaim/etcd/etcd.go b/pkg/registry/persistentvolumeclaim/etcd/etcd.go index 80b8c672890..1a245f6e9d4 100644 --- a/pkg/registry/persistentvolumeclaim/etcd/etcd.go +++ b/pkg/registry/persistentvolumeclaim/etcd/etcd.go @@ -20,6 +20,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/persistentvolumeclaim" @@ -37,7 +38,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &api.PersistentVolumeClaimList{} } storageInterface := storageDecorator( - s, 100, &api.PersistentVolumeClaim{}, prefix, persistentvolumeclaim.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.PersistentVolumeClaims), &api.PersistentVolumeClaim{}, prefix, persistentvolumeclaim.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.PersistentVolumeClaim{} }, diff --git a/pkg/registry/pod/etcd/etcd.go b/pkg/registry/pod/etcd/etcd.go index f4cabe9cde2..f5769cea683 100644 --- a/pkg/registry/pod/etcd/etcd.go +++ b/pkg/registry/pod/etcd/etcd.go @@ -30,6 +30,7 @@ import ( "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/kubelet/client" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/pod" @@ -67,7 +68,7 @@ func NewStorage( newListFunc := func() runtime.Object { return &api.PodList{} } storageInterface := storageDecorator( - s, 1000, &api.Pod{}, prefix, pod.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Pods), &api.Pod{}, prefix, pod.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.Pod{} }, diff --git a/pkg/registry/podtemplate/etcd/etcd.go b/pkg/registry/podtemplate/etcd/etcd.go index 110a27f31db..17d2718a605 100644 --- a/pkg/registry/podtemplate/etcd/etcd.go +++ b/pkg/registry/podtemplate/etcd/etcd.go @@ -20,6 +20,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/podtemplate" @@ -37,7 +38,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *RE newListFunc := func() runtime.Object { return &api.PodTemplateList{} } storageInterface := storageDecorator( - s, 100, &api.PodTemplate{}, prefix, podtemplate.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.PodTemplates), &api.PodTemplate{}, prefix, podtemplate.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.PodTemplate{} }, diff --git a/pkg/registry/resourcequota/etcd/etcd.go b/pkg/registry/resourcequota/etcd/etcd.go index 4eff474b426..b28b70c4cb8 100644 --- a/pkg/registry/resourcequota/etcd/etcd.go +++ b/pkg/registry/resourcequota/etcd/etcd.go @@ -20,6 +20,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/resourcequota" @@ -37,7 +38,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &api.ResourceQuotaList{} } storageInterface := storageDecorator( - s, 100, &api.ResourceQuota{}, prefix, resourcequota.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.ResourceQuotas), &api.ResourceQuota{}, prefix, resourcequota.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.ResourceQuota{} }, diff --git a/pkg/registry/secret/etcd/etcd.go b/pkg/registry/secret/etcd/etcd.go index 352e1fe4c14..fc8018f3f2e 100644 --- a/pkg/registry/secret/etcd/etcd.go +++ b/pkg/registry/secret/etcd/etcd.go @@ -20,6 +20,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/secret" @@ -37,7 +38,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *RE newListFunc := func() runtime.Object { return &api.SecretList{} } storageInterface := storageDecorator( - s, 100, &api.Secret{}, prefix, secret.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Secrets), &api.Secret{}, prefix, secret.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.Secret{} }, diff --git a/pkg/registry/service/etcd/etcd.go b/pkg/registry/service/etcd/etcd.go index 9cee150a969..1941779ee35 100644 --- a/pkg/registry/service/etcd/etcd.go +++ b/pkg/registry/service/etcd/etcd.go @@ -20,6 +20,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/service" @@ -37,7 +38,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*R newListFunc := func() runtime.Object { return &api.ServiceList{} } storageInterface := storageDecorator( - s, 100, &api.Service{}, prefix, service.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.Services), &api.Service{}, prefix, service.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.Service{} }, diff --git a/pkg/registry/serviceaccount/etcd/etcd.go b/pkg/registry/serviceaccount/etcd/etcd.go index 44534645380..14f71a2db51 100644 --- a/pkg/registry/serviceaccount/etcd/etcd.go +++ b/pkg/registry/serviceaccount/etcd/etcd.go @@ -20,6 +20,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/generic" etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd" "k8s.io/kubernetes/pkg/registry/serviceaccount" @@ -37,7 +38,7 @@ func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *RE newListFunc := func() runtime.Object { return &api.ServiceAccountList{} } storageInterface := storageDecorator( - s, 100, &api.ServiceAccount{}, prefix, serviceaccount.Strategy, newListFunc) + s, cachesize.GetWatchCacheSizeByResource(cachesize.ServiceAccounts), &api.ServiceAccount{}, prefix, serviceaccount.Strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &api.ServiceAccount{} },