kubernetes/pkg/kubelet
Kubernetes Submit Queue b72c006eb3 Merge pull request #34554 from derekwaynecarr/quota-storage-class
Automatic merge from submit-queue (batch tested with PRs 37270, 38309, 37568, 34554)

Ability to quota storage by storage class

Adds the ability to quota storage by storage class.
1. `<storage-class>.storageclass.storage.k8s.io/persistentvolumeclaims` - quota the number of claims with a specific storage class
2. `<storage-class>.storageclass.storage.k8s.io/requests.storage` - quota the cumulative request for storage in a particular storage class.

For example:

```
$ cat quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: storage-quota
spec:
  hard:
    requests.storage: 100Gi
    persistentvolumeclaims: 100
    gold.storageclass.storage.k8s.io/requests.storage: 50Gi
    gold.storageclass.storage.k8s.io/persistentvolumeclaims: 5
    silver.storageclass.storage.k8s.io/requests.storage: 75Gi
    silver.storageclass.storage.k8s.io/persistentvolumeclaims: 10
    bronze.storageclass.storage.k8s.io.kubernetes.io/requests.storage: 100Gi
    bronze.storageclass.storage.k8s.io/persistentvolumeclaims: 15
$ kubectl create -f quota.yaml
$ cat pvc-bronze.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  generateName: pvc-bronze-
  annotations:
    volume.beta.kubernetes.io/storage-class: "bronze"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
$ kubectl create -f pvc-bronze.yaml
$ kubectl get quota storage-quota -o yaml
apiVersion: v1
kind: ResourceQuota
...
status:
  hard:
    bronze.storageclass.storage.k8s.io/persistentvolumeclaims: "15"
    bronze.storageclass.storage.k8s.io/requests.storage: 100Gi
    gold.storageclass.storage.k8s.io/persistentvolumeclaims: "5"
    gold.storageclass.storage.k8s.io/requests.storage: 50Gi
    persistentvolumeclaims: "100"
    requests.storage: 100Gi
    silver.storageclass.storage.k8s.io/persistentvolumeclaims: "10"
    silver.storageclass.storage.k8s.io/requests.storage: 75Gi
  used:
    bronze.storageclass.storage.k8s.io/persistentvolumeclaims: "1"
    bronze.storageclass.storage.k8s.io/requests.storage: 8Gi
    gold.storageclass.storage.k8s.io/persistentvolumeclaims: "0"
    gold.storageclass.storage.k8s.io/requests.storage: "0"
    persistentvolumeclaims: "1"
    requests.storage: 8Gi
    silver.storageclass.storage.k8s.io/persistentvolumeclaims: "0"
    silver.storageclass.storage.k8s.io/requests.storage: "0"
```
2016-12-09 14:11:21 -08:00
..
api refactor: generated 2016-12-03 19:10:46 -05:00
cadvisor Fix package aliases to follow golang convention 2016-11-30 15:40:50 +08:00
client Update bazel files 2016-12-09 09:42:02 +01:00
cm run hack/update-all.sh 2016-11-23 15:53:09 -08:00
config Pass addressable values to DeepCopy 2016-12-08 14:16:01 -05:00
container refactor: update bazel, codec, and gofmt 2016-12-03 19:10:53 -05:00
custommetrics run hack/update-all.sh 2016-11-23 15:53:09 -08:00
dockershim [CRI] Manage attach TTY in Kubelet 2016-12-01 18:27:55 -08:00
dockertools Add --image-pull-progress-deadline option to kubelet 2016-12-09 09:28:57 +08:00
envvars run hack/update-all.sh 2016-11-23 15:53:09 -08:00
events autogenerated 2016-10-21 17:32:32 -07:00
eviction Ability to quota storage by storage class 2016-12-09 13:26:59 -05:00
images Add image cache. 2016-12-08 14:04:01 -08:00
kuberuntime refactor: update bazel, codec, and gofmt 2016-12-03 19:10:53 -05:00
leaky autogenerated 2016-10-21 17:32:32 -07:00
lifecycle run hack/update-all.sh 2016-11-23 15:53:09 -08:00
metrics Add instrumented CRI service which is enabled for both grpc and non-grpc 2016-10-25 10:59:27 -07:00
network Abandon setting hairpin mode if finding the peer interface fails 2016-12-06 14:33:43 +00:00
pleg autogenerated 2016-10-21 17:32:32 -07:00
pod run hack/update-all.sh 2016-11-23 15:53:09 -08:00
prober refactor: update bazel, codec, and gofmt 2016-12-03 19:10:53 -05:00
qos run hack/update-all.sh 2016-11-23 15:53:09 -08:00
remote Fix package aliases to follow golang convention 2016-11-30 15:40:50 +08:00
rkt refactor: update bazel, codec, and gofmt 2016-12-03 19:10:53 -05:00
rktshim Fix package aliases to follow golang convention 2016-11-30 15:40:50 +08:00
server refactor: update bazel, codec, and gofmt 2016-12-03 19:10:53 -05:00
status GetOptions in client calls 2016-12-09 09:42:01 +01:00
sysctl run hack/update-all.sh 2016-11-23 15:53:09 -08:00
types run hack/update-all.sh 2016-11-23 15:53:09 -08:00
util refactor: update bazel, codec, and gofmt 2016-12-03 19:10:53 -05:00
volumemanager Update bazel files 2016-12-09 09:42:02 +01:00
active_deadline_test.go refactor: update bazel, codec, and gofmt 2016-12-03 19:10:53 -05:00
active_deadline.go cmd/kubelet 2016-11-23 15:53:09 -08:00
BUILD Use PatchStatus to update node status in kubelet. 2016-12-08 17:13:59 -08:00
disk_manager_test.go Revert "Declare out of disk when there is no free inodes" 2016-07-06 08:19:09 -07:00
disk_manager.go Revert "Declare out of disk when there is no free inodes" 2016-07-06 08:19:09 -07:00
doc.go Use Go canonical import paths 2016-07-16 13:48:21 -04:00
kubelet_cadvisor_test.go Print/log pointers of structs with %#v instead of %+v 2016-08-01 22:27:56 +02:00
kubelet_cadvisor.go Eviction manager needs to start as runtime dependent module 2016-07-22 10:19:40 -04:00
kubelet_getters_test.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
kubelet_getters.go cmd/kubelet 2016-11-23 15:53:09 -08:00
kubelet_network_test.go Merge pull request #36785 from wlan0/kubelet 2016-12-01 04:52:11 -08:00
kubelet_network.go Merge pull request #36785 from wlan0/kubelet 2016-12-01 04:52:11 -08:00
kubelet_node_status_test.go Use PatchStatus to update node status in kubelet. 2016-12-08 17:13:59 -08:00
kubelet_node_status.go Merge pull request #37871 from Random-Liu/use-patch-in-kubelet 2016-12-09 11:29:11 -08:00
kubelet_pods_test.go cmd/kubelet 2016-11-23 15:53:09 -08:00
kubelet_pods.go GetOptions in client calls 2016-12-09 09:42:01 +01:00
kubelet_resources_test.go remove v1.Semantics 2016-11-23 15:53:09 -08:00
kubelet_resources.go cmd/kubelet 2016-11-23 15:53:09 -08:00
kubelet_test.go Add image cache. 2016-12-08 14:04:01 -08:00
kubelet_volumes_test.go cmd/kubelet 2016-11-23 15:53:09 -08:00
kubelet_volumes.go remove checking mount point in cleanupOrphanedPodDirs 2016-11-30 13:46:39 -08:00
kubelet.go Merge pull request #35939 from xiangpengzhao/minor-cleanup 2016-12-08 07:41:08 -08:00
networks.go cmd/kubelet 2016-11-23 15:53:09 -08:00
oom_watcher_test.go cmd/kubelet 2016-11-23 15:53:09 -08:00
oom_watcher.go refactor: update bazel, codec, and gofmt 2016-12-03 19:10:53 -05:00
OWNERS
pod_container_deletor_test.go Delete all dead containers only after pod syncing is done. 2016-08-15 14:36:51 -07:00
pod_container_deletor.go Delete all dead containers only after pod syncing is done. 2016-08-15 14:36:51 -07:00
pod_workers_test.go cmd/kubelet 2016-11-23 15:53:09 -08:00
pod_workers.go cmd/kubelet 2016-11-23 15:53:09 -08:00
reason_cache_test.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
reason_cache.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
runonce_test.go cmd/kubelet 2016-11-23 15:53:09 -08:00
runonce.go cmd/kubelet 2016-11-23 15:53:09 -08:00
runtime.go Create hostNetwork pods even if network plugin not ready 2016-11-04 00:11:55 -04:00
util.go cmd/kubelet 2016-11-23 15:53:09 -08:00
volume_host.go cmd/kubelet 2016-11-23 15:53:09 -08:00