為命名空間配置 Pod 配額

限制您可以在命名空間中建立多少個 Pod。

本頁說明如何為命名空間中可以執行的 Pod 總數設定配額。命名空間。您在 ResourceQuota 物件中指定配額。

準備開始

您需要有一個 Kubernetes 叢集,而且 kubectl 命令列工具必須配置為與您的叢集通訊。建議在至少有兩個節點且節點不充當控制平面主機的叢集上執行本教學課程。如果您還沒有叢集,可以使用 minikube 建立一個,也可以使用這些 Kubernetes 實驗環境之一

您必須具有在叢集中建立命名空間的存取權。

建立命名空間

建立命名空間,以便將您在此練習中建立的資源與叢集的其餘部分隔離。

kubectl create namespace quota-pod-example

建立 ResourceQuota

以下是 ResourceQuota 的範例資訊清單

apiVersion: v1
kind: ResourceQuota
metadata:
  name: pod-demo
spec:
  hard:
    pods: "2"

建立 ResourceQuota

kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod.yaml --namespace=quota-pod-example

檢視有關 ResourceQuota 的詳細資訊

kubectl get resourcequota pod-demo --namespace=quota-pod-example --output=yaml

輸出顯示命名空間有兩個 Pod 的配額,而且目前沒有 Pod;也就是說,沒有使用任何配額。

spec:
  hard:
    pods: "2"
status:
  hard:
    pods: "2"
  used:
    pods: "0"

以下是 Deployment 的範例資訊清單

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pod-quota-demo
spec:
  selector:
    matchLabels:
      purpose: quota-demo
  replicas: 3
  template:
    metadata:
      labels:
        purpose: quota-demo
    spec:
      containers:
      - name: pod-quota-demo
        image: nginx

在該 Manifest 檔案中,replicas: 3 告訴 Kubernetes 嘗試建立三個新的 Pod,全部都執行相同的應用程式。

建立 Deployment

kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod-deployment.yaml --namespace=quota-pod-example

檢視 Deployment 的詳細資訊

kubectl get deployment pod-quota-demo --namespace=quota-pod-example --output=yaml

輸出顯示即使 Deployment 指定了三個副本,但由於您先前定義的配額,只建立了兩個 Pod。

spec:
  ...
  replicas: 3
...
status:
  availableReplicas: 2
...
lastUpdateTime: 2021-04-02T20:57:05Z
    message: 'unable to create pods: pods "pod-quota-demo-1650323038-" is forbidden:
      exceeded quota: pod-demo, requested: pods=1, used: pods=2, limited: pods=2'

資源的選擇

在這個任務中,您定義了一個 ResourceQuota 來限制 Pod 的總數,但您也可以限制其他種類物件的總數。例如,您可能會決定限制在單一命名空間中可以存在多少個 CronJob

清理

刪除您的命名空間

kubectl delete namespace quota-pod-example

接下來是什麼

給叢集管理員

給應用程式開發人員

上次修改時間為 2024 年 10 月 30 日下午 5:17 PST:KEP 2837: Pod Level Resources Alpha (0374213f57)