為容器指派擴充資源

功能狀態: Kubernetes v1.32 [穩定]

本頁說明如何為容器指派擴充資源。

準備開始

您需要有一個 Kubernetes 叢集,且必須將 kubectl 命令列工具設定為與您的叢集通訊。建議在至少有兩個非控制平面主機節點的叢集上執行本教學課程。如果您還沒有叢集,可以使用 minikube 建立一個,或者您可以使用下列 Kubernetes 體驗環境

若要檢查版本,請輸入 kubectl version

在執行本練習之前,請先完成宣告節點的擴充資源中的練習。這會設定您的一個節點以宣告 dongle 資源。

為 Pod 指派擴充資源

若要請求擴充資源,請在您的容器資訊清單中包含 resources:requests 欄位。擴充資源會使用 *.kubernetes.io/ 以外的任何網域完全限定。有效的擴充資源名稱具有 example.com/foo 的形式,其中 example.com 會替換為您組織的網域,而 foo 則是描述性資源名稱。

以下是具有一個容器的 Pod 的組態檔

apiVersion: v1
kind: Pod
metadata:
  name: extended-resource-demo
spec:
  containers:
  - name: extended-resource-demo-ctr
    image: nginx
    resources:
      requests:
        example.com/dongle: 3
      limits:
        example.com/dongle: 3

在組態檔中,您可以看到容器請求 3 個 dongle。

建立 Pod

kubectl apply -f https://k8s.io/examples/pods/resource/extended-resource-pod.yaml

驗證 Pod 是否正在執行

kubectl get pod extended-resource-demo

描述 Pod

kubectl describe pod extended-resource-demo

輸出顯示 dongle 請求

Limits:
  example.com/dongle: 3
Requests:
  example.com/dongle: 3

嘗試建立第二個 Pod

以下是具有一個容器的 Pod 的組態檔。容器請求兩個 dongle。

apiVersion: v1
kind: Pod
metadata:
  name: extended-resource-demo-2
spec:
  containers:
  - name: extended-resource-demo-2-ctr
    image: nginx
    resources:
      requests:
        example.com/dongle: 2
      limits:
        example.com/dongle: 2

Kubernetes 將無法滿足兩個 dongle 的請求,因為第一個 Pod 使用了四個可用 dongle 中的三個。

嘗試建立 Pod

kubectl apply -f https://k8s.io/examples/pods/resource/extended-resource-pod-2.yaml

描述 Pod

kubectl describe pod extended-resource-demo-2

輸出顯示 Pod 無法排程,因為沒有節點有 2 個可用的 dongle

Conditions:
  Type    Status
  PodScheduled  False
...
Events:
  ...
  ... Warning   FailedScheduling  pod (extended-resource-demo-2) failed to fit in any node
fit failure summary on nodes : Insufficient example.com/dongle (1)

檢視 Pod 狀態

kubectl get pod extended-resource-demo-2

輸出顯示已建立 Pod,但未排程在節點上執行。其狀態為 Pending

NAME                       READY     STATUS    RESTARTS   AGE
extended-resource-demo-2   0/1       Pending   0          6m

清除

刪除您為本練習建立的 Pod

kubectl delete pod extended-resource-demo
kubectl delete pod extended-resource-demo-2

下一步

適用於應用程式開發人員

適用於叢集管理員

上次修改時間:2023 年 8 月 24 日下午 6:38 PST:Use code_sample shortcode instead of code shortcode (e8b136c3b3)