Kubernetes 為容器分派擴展資源

2022-06-09 11:44 更新

為容器分派擴展資源

FEATURE STATE: Kubernetes v1.24 [stable]

本文介紹如何為容器指定擴展資源。

在開始之前

你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構(gòu)建:

要檢查版本,請輸入 ?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 個 dongles。

創(chuàng)建 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

輸出結(jié)果顯示 dongle 請求如下:

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

嘗試創(chuàng)建第二個 Pod

下面是包含一個容器的 Pod 配置文件,容器請求了 2 個 dongles。

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 將不能滿足 2 個 dongles 的請求,因為第一個 Pod 已經(jīng)使用了 4 個可用 dongles 中的 3 個。

嘗試創(chuàng)建 Pod:

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

描述 Pod:

kubectl describe pod extended-resource-demo-2

輸出結(jié)果表明 Pod 不能被調(diào)度,因為沒有一個節(jié)點上存在兩個可用的 dongles。

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 的狀態(tài):

kubectl get pod extended-resource-demo-2

輸出結(jié)果表明 Pod 雖然被創(chuàng)建了,但沒有被調(diào)度到節(jié)點上正常運行。Pod 的狀態(tài)為 Pending:

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

清理

刪除本練習中創(chuàng)建的 Pod:

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號