限制儲存消耗
此示例演示瞭如何在名稱空間中限制儲存消耗量。
演示中使用了以下資源:ResourceQuota、LimitRange 和 PersistentVolumeClaim。
準備工作
你需要有一個 Kubernetes 叢集,並且 kubectl 命令列工具已配置為與你的叢集通訊。建議在至少有兩個不充當控制平面主機的節點叢集上執行本教程。如果你還沒有叢集,你可以透過使用 minikube 來建立一個,或者你可以使用這些 Kubernetes 演練環境中的一個。
要檢查版本,請輸入
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"
總結
限制範圍可以限制請求的儲存量,而資源配額可以透過宣告計數和累計儲存容量有效地限制名稱空間消耗的儲存量。這允許叢集管理員規劃其叢集的儲存預算,而不會有任何專案超出其配額的風險。