2016-02-05 07:47:27 +00:00
|
|
|
/*
|
2016-06-03 00:25:58 +00:00
|
|
|
Copyright 2014 The Kubernetes Authors.
|
2016-02-05 07:47:27 +00:00
|
|
|
|
|
|
|
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 (
|
2016-04-14 01:25:33 +00:00
|
|
|
CertificateSigningRequests Resource = "certificatesigningrequests"
|
|
|
|
ClusterRoles Resource = "clusterroles"
|
|
|
|
ClusterRoleBindings Resource = "clusterrolebindings"
|
|
|
|
Controllers Resource = "controllers"
|
|
|
|
Daemonsets Resource = "daemonsets"
|
|
|
|
Deployments Resource = "deployments"
|
|
|
|
Endpoints Resource = "endpoints"
|
|
|
|
HorizontalPodAutoscalers Resource = "horizontalpodautoscalers"
|
|
|
|
Ingress Resource = "ingress"
|
|
|
|
PodDisruptionBudget Resource = "poddisruptionbudgets"
|
|
|
|
PetSet Resource = "petset"
|
|
|
|
Jobs Resource = "jobs"
|
|
|
|
LimitRanges Resource = "limitranges"
|
|
|
|
Namespaces Resource = "namespaces"
|
|
|
|
NetworkPolicys Resource = "networkpolicies"
|
|
|
|
Nodes Resource = "nodes"
|
|
|
|
PersistentVolumes Resource = "persistentvolumes"
|
|
|
|
PersistentVolumeClaims Resource = "persistentvolumeclaims"
|
|
|
|
Pods Resource = "pods"
|
|
|
|
PodTemplates Resource = "podtemplates"
|
|
|
|
Replicasets Resource = "replicasets"
|
|
|
|
ResourceQuotas Resource = "resourcequotas"
|
|
|
|
ScheduledJobs Resource = "scheduledjobs"
|
|
|
|
Roles Resource = "roles"
|
|
|
|
RoleBindings Resource = "rolebindings"
|
|
|
|
Secrets Resource = "secrets"
|
|
|
|
ServiceAccounts Resource = "serviceaccounts"
|
|
|
|
Services Resource = "services"
|
2016-02-05 07:47:27 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var watchCacheSizes map[Resource]int
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
watchCacheSizes = make(map[Resource]int)
|
2016-04-14 01:25:33 +00:00
|
|
|
watchCacheSizes[CertificateSigningRequests] = 1000
|
2016-05-25 21:19:55 +00:00
|
|
|
watchCacheSizes[ClusterRoles] = 100
|
|
|
|
watchCacheSizes[ClusterRoleBindings] = 100
|
2016-02-05 07:47:27 +00:00
|
|
|
watchCacheSizes[Controllers] = 100
|
|
|
|
watchCacheSizes[Daemonsets] = 100
|
|
|
|
watchCacheSizes[Deployments] = 100
|
|
|
|
watchCacheSizes[Endpoints] = 1000
|
|
|
|
watchCacheSizes[HorizontalPodAutoscalers] = 100
|
|
|
|
watchCacheSizes[Ingress] = 100
|
2016-04-15 22:30:15 +00:00
|
|
|
watchCacheSizes[PetSet] = 100
|
2016-05-07 00:03:43 +00:00
|
|
|
watchCacheSizes[PodDisruptionBudget] = 100
|
2016-02-05 07:47:27 +00:00
|
|
|
watchCacheSizes[Jobs] = 100
|
|
|
|
watchCacheSizes[LimitRanges] = 100
|
|
|
|
watchCacheSizes[Namespaces] = 100
|
2016-05-18 17:16:33 +00:00
|
|
|
watchCacheSizes[NetworkPolicys] = 100
|
2016-02-05 07:47:27 +00:00
|
|
|
watchCacheSizes[Nodes] = 1000
|
|
|
|
watchCacheSizes[PersistentVolumes] = 100
|
|
|
|
watchCacheSizes[PersistentVolumeClaims] = 100
|
|
|
|
watchCacheSizes[Pods] = 1000
|
|
|
|
watchCacheSizes[PodTemplates] = 100
|
2016-01-18 20:32:44 +00:00
|
|
|
watchCacheSizes[Replicasets] = 100
|
2016-02-05 07:47:27 +00:00
|
|
|
watchCacheSizes[ResourceQuotas] = 100
|
2016-05-12 19:55:51 +00:00
|
|
|
watchCacheSizes[ScheduledJobs] = 100
|
2016-05-25 21:19:55 +00:00
|
|
|
watchCacheSizes[Roles] = 100
|
|
|
|
watchCacheSizes[RoleBindings] = 100
|
2016-02-05 07:47:27 +00:00
|
|
|
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]
|
|
|
|
}
|