mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2025-11-02 19:28:16 +00:00
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"
```