為容器分配擴充套件資源
特性狀態:
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)