全部產品
Search
文件中心

Container Service for Kubernetes:基於ECI運行Job任務

更新時間:Jun 19, 2024

本文主要為您介紹通過虛擬節點運行Job任務的方式,您可以用最小的營運成本(無需調整節點數量)來應對叢集計算資源高峰壓力。

背景資訊

Kubernetes叢集的節點資源配置不足會導致Pod無法及時運行,購買過多的節點又會導致資源的閑置浪費。而虛擬節點就像是kubernetes叢集的“魔法口袋”,讓我們擺脫節點計算力不足的煩擾,也避免了節點的閑置浪費,滿足無限計算力的想象,Pod按需建立,輕鬆應對計算的波峰波穀。Kubernetes叢集大規模使用虛擬節點有以下特點:
  • 業務有明顯的波峰穀特徵。
  • 使用ECI作為彈性資源集區,應對突發流量和Job任務,最大程度降低計算成本。
Kuberntes叢集

本例中,建立的Kubernetes託管版叢集中,Master節點被託管(使用者無需付費),2台Worker均為4c8g規格,所以整個Kubernetes託管版叢集的可用計算容量是8c16g。需要運行一個Job離線任務做資料處理,Job的cpu/mem需求為16c32g。此時Job無法在您建立的Kubernetes託管版叢集中運行,因為其資源需求已經超過Kubernetes託管版叢集的8c16g計算容量。因此,您可以選擇把這個Job任務調度到虛擬節點上,而不佔用叢集本身節點的計算資源。

前提條件

操作步驟

  1. 通過kubectl用戶端建立job.yaml檔案,並複製以下內容到該檔案中。
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
    spec:
      template:
        spec:
          containers:
          - name: pi
            image: perl
            command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
            resources:
              requests:
                cpu: 16
                memory: 32Gi
          restartPolicy: Never
      backoffLimit: 4
  2. 執行以下命令部署一個job任務。
    kubectl -n vk apply -f job.yaml
  3. 查看Pod的運行狀態。
    執行以下命令查看Pod的狀態。
    kubectl -n vk get pod -a
    預期輸出:
    NAME       READY     STATUS      RESTARTS   AGE
    pi-7cmwv   0/1       Completed   0          2m
    執行以下命令查看Pod的具體運行狀態。
    kubectl -n vk describe pod
    預期輸出:
    Name:               pi-7cmwv
    Namespace:          vk
    Priority:           0
    PriorityClassName:  <none>
    Node:               virtual-kubelet/
    ...
    Events:
      Type    Reason                 Age   From               Message
      ----    ------                 ----  ----               -------
      Normal  Scheduled              3m    default-scheduler  Successfully assigned vk/pi-7cmwv to virtual-kubelet
      Normal  SuccessfulMountVolume  2m    kubelet, eci       MountVolume.SetUp succeeded for volume "default-token-b2tff"
      Normal  Pulling                2m    kubelet, eci       pulling image "perl"
      Normal  Pulled                 2m    kubelet, eci       Successfully pulled image "perl"
      Normal  Created                2m    kubelet, eci       Created container
      Normal  Started                2m    kubelet, eci       Started container
    說明 虛擬節點中的Pod完全是按需收費,當Pod執行完成後就會停止收費。

因此,可以看到使用虛擬節點運行Job短時間任務可以節省計算成本,減輕叢集營運負擔,您無需關心叢集的計算資源是否充足,也無需關心節點的擴容和縮容。