配置 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

下一步

致叢集管理員

致應用開發者

最後修改於 2024 年 10 月 30 日下午 5:17 PST:KEP 2837:Pod 級別資源 Alpha (0374213f57)