限制儲存空間用量
此範例示範如何限制命名空間中消耗的儲存空間量。
示範中使用了以下資源:ResourceQuota、LimitRange 和 PersistentVolumeClaim。
開始之前
您需要有一個 Kubernetes 叢集,並且必須將 kubectl 命令列工具設定為與您的叢集通訊。建議在至少有兩個節點且未充當控制平面主機的叢集上執行本教學課程。如果您還沒有叢集,可以使用 minikube 建立一個,或者您可以使用這些 Kubernetes Playground 之一
若要檢查版本,請輸入kubectl version
。
情境:限制儲存空間用量
叢集管理員代表使用者群體運作叢集,並且管理員想要控制單一命名空間可以消耗多少儲存空間,以控制成本。
管理員想要限制
- 命名空間中持久性磁碟區宣告的數量
- 每個宣告可以請求的儲存空間量
- 命名空間可以擁有的累積儲存空間量
LimitRange 限制儲存空間請求
將 LimitRange
新增至命名空間會強制儲存空間請求大小具有最小值和最大值。儲存空間透過 PersistentVolumeClaim
請求。強制執行限制範圍的許可控制器將拒絕任何超出或低於管理員設定值的 PVC。
在此範例中,請求 10Gi 儲存空間的 PVC 將被拒絕,因為它超過了 2Gi 最大值。
apiVersion: v1
kind: LimitRange
metadata:
name: storagelimits
spec:
limits:
- type: PersistentVolumeClaim
max:
storage: 2Gi
min:
storage: 1Gi
當底層儲存空間提供者需要某些最小值時,會使用最小儲存空間請求。例如,AWS EBS 磁碟區具有 1Gi 最小需求。
ResourceQuota 限制 PVC 計數和累積儲存容量
管理員可以限制命名空間中 PVC 的數量以及這些 PVC 的累積容量。超出任一最大值的新 PVC 將會被拒絕。
在這個範例中,命名空間中的第 6 個 PVC 將會被拒絕,因為它超過了 5 個的最大計數。 或者,當 5Gi 最大配額與上述 2Gi 最大限制結合時,不能有 3 個 PVC,且每個 PVC 都有 2Gi。 那樣將會請求 6Gi,但命名空間上限為 5Gi。
apiVersion: v1
kind: ResourceQuota
metadata:
name: storagequota
spec:
hard:
persistentvolumeclaims: "5"
requests.storage: "5Gi"
摘要
限制範圍可以對請求的儲存量設定上限,而資源配額可以透過宣告計數和累積儲存容量有效地限制命名空間所消耗的儲存空間。 這讓叢集管理員可以規劃其叢集的儲存預算,而無需擔心任何一個專案超出其配額。