為容器分配擴充套件資源

特性狀態: Kubernetes v1.34 [stable]

本頁面展示瞭如何為容器分配擴充套件資源。

準備工作

你需擁有一個 Kubernetes 叢集,並且 kubectl 命令列工具已配置為與你的叢集通訊。 建議在至少包含兩個不作為控制平面主機的節點的叢集上執行本教程。 如果你還沒有叢集,你可以使用 minikube 建立一個,或者使用這些 Kubernetes 遊樂場之一

要檢查版本,請輸入 kubectl version

在執行此練習之前,請先完成 為節點通告擴充套件資源 中的練習。 這將配置你的一個節點以通告一個“加密狗”資源。

為 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 個加密狗。

建立一個 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

輸出顯示了加密狗請求

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

嘗試建立第二個 Pod

以下是包含一個容器的 Pod 的配置檔案。 該容器請求兩個加密狗。

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 將無法滿足對兩個加密狗的請求,因為第一個 Pod 使用了四個可用加密狗中的三個。

嘗試建立一個 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 個加密狗的節點

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:使用 code_sample 簡碼代替 code 簡碼 (e8b136c3b3)