kubernetes/pkg
Kubernetes Submit Queue 8188c3cca4 Merge pull request #40796 from wojtek-t/use_node_ttl_in_secret_manager
Automatic merge from submit-queue (batch tested with PRs 40796, 40878, 36033, 40838, 41210)

Implement TTL controller and use the ttl annotation attached to node in secret manager

For every secret attached to a pod as volume, Kubelet is trying to refresh it every sync period. Currently Kubelet has a ttl-cache of secrets of its pods and the ttl is set to 1 minute. That means that in large clusters we are targetting (5k nodes, 30pods/node), given that each pod has a secret associated with ServiceAccount from its namespaces, and with large enough number of namespaces (where on each node (almost) every pod is from a different namespace), that resource in ~30 GETs to refresh all secrets every minute from one node, which gives ~2500QPS for GET secrets to apiserver.

Apiserver cannot keep up with it very easily.

Desired solution would be to watch for secret changes, but because of security we don't want a node watching for all secrets, and it is not possible for now to watch only for secrets attached to pods from my node.

So as a temporary solution, we are introducing an annotation that would be a suggestion for kubelet for the TTL of secrets in the cache and a very simple controller that would be setting this annotation based on the cluster size (the large cluster is, the bigger ttl is). 
That workaround mean that only very local changes are needed in Kubelet, we are creating a well separated very simple controller, and once watching "my secrets" will be possible it will be easy to remove it and switch to that. And it will allow us to reach scalability goals.

@dchen1107 @thockin @liggitt
2017-02-10 00:04:44 -08:00
..
api Implement ttl controller 2017-02-09 13:53:32 +01:00
apimachinery/tests Update generated files 2017-01-29 21:41:45 +01:00
apis Merge pull request #36908 from vishh/cc-owner 2017-02-07 09:05:06 -08:00
auth Update authn/authz owners and reviewers 2017-01-27 08:55:44 -05:00
capabilities Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
client install authorization.k8s.io/v1, add tests 2017-02-06 18:16:51 -05:00
cloudprovider Merge pull request #40118 from vmware/FixdetachVolumeOnNodeOff 2017-02-09 16:44:40 -08:00
controller Merge pull request #40796 from wojtek-t/use_node_ttl_in_secret_manager 2017-02-10 00:04:44 -08:00
conversion Revert "Remove conversion package" 2017-01-22 15:41:06 -08:00
credentialprovider Merge pull request #40142 from colemickens/colemickens-acr-login-server 2017-01-25 00:40:02 -08:00
features update critical pod annotation flag gate to mention that BestEffort pods are not supported 2017-02-02 11:32:23 -08:00
fieldpath Merge pull request #34533 from yuexiao-wang/fix-commends 2017-01-30 09:05:22 -08:00
fields move pkg/fields to apimachinery 2017-01-19 09:50:16 -05:00
generated Extract strings for translation. 2017-02-06 22:32:01 -08:00
hyperkube Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
kubeapiserver remove duplication of RESTOptionsGetter for kube 2017-02-08 09:08:58 -05:00
kubectl Merge pull request #40365 from shiywang/attach 2017-02-09 13:34:56 -08:00
kubelet Merge pull request #40796 from wojtek-t/use_node_ttl_in_secret_manager 2017-02-10 00:04:44 -08:00
kubemark Updated NodeRef to clientv1.ObjectReference. 2017-02-07 06:27:06 +08:00
labels add back just enough empty packages to allow heapster cycles to succeed 2017-01-17 08:07:30 -05:00
master remove duplication of RESTOptionsGetter for kube 2017-02-08 09:08:58 -05:00
metrics refactor: move ListOptions references to metav1 2017-01-23 17:52:46 -05:00
probe start the apimachinery repo 2017-01-11 09:09:48 -05:00
proxy Updated NodeRef to clientv1.ObjectReference. 2017-02-07 06:27:06 +08:00
quota Update generated files 2017-01-29 21:41:45 +01:00
registry Merge pull request #40985 from p0lyn0mial/add_shortnames_to_discovery_api 2017-02-07 06:21:10 -08:00
routes Update generated files 2017-02-03 08:15:46 +01:00
runtime add back just enough empty packages to allow heapster cycles to succeed 2017-01-17 08:07:30 -05:00
security Update generated files 2017-01-24 20:56:03 +01:00
securitycontext securitycontext: move docker-specific logic into kubelet/dockertools 2017-01-27 12:25:46 -08:00
serviceaccount Allow reading ECDSA key files containing parameter blocks 2017-02-01 10:18:58 -05:00
ssh use apimachinery packages instead of client-go packages 2017-01-13 14:04:54 -05:00
types add back just enough empty packages to allow heapster cycles to succeed 2017-01-17 08:07:30 -05:00
util Merge pull request #40645 from brendandburns/fr 2017-01-31 21:27:52 -08:00
version genericapiserver: cut off kube pkg/version dependency 2017-01-17 12:34:05 +01:00
volume Merge pull request #41042 from gnufied/add-gnufied-reviewer-gce-aws-volume 2017-02-07 22:12:23 -08:00
watch add back just enough empty packages to allow heapster cycles to succeed 2017-01-17 08:07:30 -05:00
BUILD Generated files 2017-02-06 18:16:51 -05:00
OWNERS Updated top level owners file to match new format 2017-01-19 11:29:16 -08:00