Kubernetes 限制存儲(chǔ)消耗

2022-06-09 10:24 更新

限制存儲(chǔ)消耗

此示例演示了如何限制一個(gè)名字空間中的存儲(chǔ)使用量。

演示中用到了以下資源:ResourceQuota, LimitRange 和 PersistentVolumeClaim。

在開(kāi)始之前

你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒(méi)有集群,你可以通過(guò) Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:

要檢查版本,請(qǐng)輸入 ?kubectl version?。

場(chǎng)景:限制存儲(chǔ)消耗

集群管理員代表用戶群操作集群,管理員希望控制單個(gè)名稱空間可以消耗多少存儲(chǔ)空間以控制成本。

管理員想要限制:

  1. 名字空間中持久卷申領(lǐng)(persistent volume claims)的數(shù)量
  2. 每個(gè)申領(lǐng)(claim)可以請(qǐng)求的存儲(chǔ)量
  3. 名字空間可以具有的累計(jì)存儲(chǔ)量

使用 LimitRange 限制存儲(chǔ)請(qǐng)求

將 ?LimitRange ?添加到名字空間會(huì)為存儲(chǔ)請(qǐng)求大小強(qiáng)制設(shè)置最小值和最大值。 存儲(chǔ)是通過(guò) ?PersistentVolumeClaim ?來(lái)發(fā)起請(qǐng)求的。 執(zhí)行限制范圍控制的準(zhǔn)入控制器會(huì)拒絕任何高于或低于管理員所設(shè)閾值的 PVC。

在此示例中,請(qǐng)求 10Gi 存儲(chǔ)的 PVC 將被拒絕,因?yàn)樗^(guò)了最大 2Gi。

apiVersion: v1
kind: LimitRange
metadata:
  name: storagelimits
spec:
  limits:
  - type: PersistentVolumeClaim
    max:
      storage: 2Gi
    min:
      storage: 1Gi

當(dāng)?shù)讓哟鎯?chǔ)提供程序需要某些最小值時(shí),將會(huì)用到所設(shè)置最小存儲(chǔ)請(qǐng)求值。 例如,AWS EBS volumes 的最低要求為 1Gi。

使用 StorageQuota 限制 PVC 數(shù)目和累計(jì)存儲(chǔ)容量

管理員可以限制某個(gè)名字空間中的 PVCs 個(gè)數(shù)以及這些 PVCs 的累計(jì)容量。 新 PVCs 請(qǐng)求如果超過(guò)任一上限值將被拒絕。

在此示例中,名字空間中的第 6 個(gè) PVC 將被拒絕,因?yàn)樗^(guò)了最大計(jì)數(shù) 5。 或者,當(dāng)與上面的 2Gi 最大容量限制結(jié)合在一起時(shí),意味著 5Gi 的最大配額 不能支持 3 個(gè)都是 2Gi 的 PVC。 后者實(shí)際上是向名字空間請(qǐng)求 6Gi 容量,而該命令空間已經(jīng)設(shè)置上限為 5Gi。

apiVersion: v1
kind: ResourceQuota
metadata:
  name: storagequota
spec:
  hard:
    persistentvolumeclaims: "5"
    requests.storage: "5Gi"

小結(jié)

限制范圍對(duì)象可以用來(lái)設(shè)置可請(qǐng)求的存儲(chǔ)量上限,而資源配額對(duì)象則可以通過(guò)申領(lǐng)計(jì)數(shù)和 累計(jì)存儲(chǔ)容量有效地限制名字空間耗用的存儲(chǔ)量。 這兩種機(jī)制使得集群管理員能夠規(guī)劃其集群存儲(chǔ)預(yù)算而不會(huì)發(fā)生任一項(xiàng)目超量分配的風(fēng)險(xiǎn)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)