配置 API 物件的配額
本頁面展示瞭如何為 API 物件(包括 PersistentVolumeClaims 和 Services)配置配額。配額限制了特定型別物件在名稱空間中可建立的數量。你在 ResourceQuota 物件中指定配額。
準備工作
你必須擁有一個 Kubernetes 叢集,並且 kubectl 命令列工具必須配置為與你的叢集通訊。建議在至少有兩個不作為控制平面主機的節點的叢集上執行本教程。如果你還沒有叢集,你可以使用 minikube 建立一個,或者你可以使用這些 Kubernetes 演練場之一
要檢查版本,請輸入 kubectl version
。
建立名稱空間
建立一個名稱空間,以便你在本練習中建立的資源與叢集的其餘部分隔離。
kubectl create namespace quota-object-example
建立一個 ResourceQuota
以下是 ResourceQuota 物件的配置檔案
apiVersion: v1
kind: ResourceQuota
metadata:
name: object-quota-demo
spec:
hard:
persistentvolumeclaims: "1"
services.loadbalancers: "2"
services.nodeports: "0"
建立 ResourceQuota
kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects.yaml --namespace=quota-object-example
檢視 ResourceQuota 的詳細資訊
kubectl get resourcequota object-quota-demo --namespace=quota-object-example --output=yaml
輸出顯示,在 quota-object-example 名稱空間中,最多可以有一個 PersistentVolumeClaim,最多可以有兩個 LoadBalancer 型別的 Service,並且不能有 NodePort 型別的 Service。
status:
hard:
persistentvolumeclaims: "1"
services.loadbalancers: "2"
services.nodeports: "0"
used:
persistentvolumeclaims: "0"
services.loadbalancers: "0"
services.nodeports: "0"
建立 PersistentVolumeClaim
以下是 PersistentVolumeClaim 物件的配置檔案
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-quota-demo
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
建立 PersistentVolumeClaim
kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects-pvc.yaml --namespace=quota-object-example
驗證 PersistentVolumeClaim 是否已建立
kubectl get persistentvolumeclaims --namespace=quota-object-example
輸出顯示 PersistentVolumeClaim 存在且狀態為 Pending
NAME STATUS
pvc-quota-demo Pending
嘗試建立第二個 PersistentVolumeClaim
以下是第二個 PersistentVolumeClaim 的配置檔案
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-quota-demo-2
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
嘗試建立第二個 PersistentVolumeClaim
kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects-pvc-2.yaml --namespace=quota-object-example
輸出顯示第二個 PersistentVolumeClaim 未建立,因為它將超出名稱空間的配額。
persistentvolumeclaims "pvc-quota-demo-2" is forbidden:
exceeded quota: object-quota-demo, requested: persistentvolumeclaims=1,
used: persistentvolumeclaims=1, limited: persistentvolumeclaims=1
備註
這些是用於標識可透過配額限制的 API 資源的字串
字串 | API 物件 |
---|---|
"pods" | Pod |
"services" | 服務 |
"replicationcontrollers" | 複製控制器 |
"resourcequotas" | ResourceQuota |
"secrets" | Secret |
"configmaps" | ConfigMap |
"persistentvolumeclaims" | PersistentVolumeClaim |
"services.nodeports" | NodePort 型別的服務 |
"services.loadbalancers" | LoadBalancer 型別的服務 |
清理
刪除你的名稱空間
kubectl delete namespace quota-object-example