溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Kubernetes 1.21如何引入Indexed Jobs特性

發(fā)布時(shí)間:2021-12-24 13:46:45 來(lái)源:億速云 閱讀:159 作者:小新 欄目:云計(jì)算

這篇文章主要為大家展示了“Kubernetes 1.21如何引入Indexed Jobs特性”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Kubernetes 1.21如何引入Indexed Jobs特性”這篇文章吧。

一旦你將一個(gè)非并行作業(yè)(Job)容器化,就很容易在 Kubernetes 上啟動(dòng)并運(yùn)行它,而無(wú)需修改二進(jìn)制文件。在大多數(shù)情況下,當(dāng)運(yùn)行并行分布式作業(yè)時(shí),你必須設(shè)置一個(gè)單獨(dú)的系統(tǒng)來(lái)在工作資源之間劃分工作。例如,你可以設(shè)置一個(gè)任務(wù)隊(duì)列,將一個(gè)工作項(xiàng)分配給每個(gè) Pod[2],或?qū)⒍鄠€(gè)項(xiàng)分配給每個(gè) Pod,直到隊(duì)列清空為止[3]

Kubernetes 1.21 版本引入了一個(gè)新的字段來(lái)控制作業(yè)完成模式,這是一個(gè)配置選項(xiàng),允許你控制 Pod 完成如何影響作業(yè)的總體進(jìn)度,有兩個(gè)可能的選項(xiàng)(目前):

  • NonIndexed(默認(rèn)值):當(dāng)成功完成的 Pods 的數(shù)量等于.spec.completions 中指定的數(shù)量時(shí),作業(yè)被認(rèn)為是完成的。換句話說(shuō),每一個(gè) Pod 的完成都是彼此同源的。在引入完成模式之前創(chuàng)建的任何作業(yè)都是隱式非索引的。
  • Indexed:當(dāng)有一個(gè)成功完成的 Pod 與從 0 到.spec.completions-1 的每個(gè)索引相關(guān)聯(lián)時(shí),作業(yè)被認(rèn)為是完成的。該索引暴露于每一個(gè) Pod 中的 batch.kubernetes.io/job-completion-index 注釋和 JOB_COMPLETION_INDEX 環(huán)境變量。

你可以開(kāi)始使用帶有索引完成模式的作業(yè),簡(jiǎn)稱(chēng)為索引作業(yè)(Indexed Jobs),來(lái)輕松啟動(dòng)并行作業(yè)。然后,每個(gè) worker Pod 可以根據(jù)索引有一個(gè)靜態(tài)分配的數(shù)據(jù)分區(qū)。這使你不必設(shè)置排隊(duì)系統(tǒng),甚至不必修改二進(jìn)制文件!

 

創(chuàng)建索引作業(yè)

要?jiǎng)?chuàng)建一個(gè)索引作業(yè),你只需添加 completionMode: Indexed 到作業(yè)規(guī)范中,并使用 JOB_COMPLETION_INDEX 環(huán)境變量。

apiVersion: batch/v1
kind: Job
metadata:
  name: 'sample-job'
spec:
  completions: 3
  parallelism: 3
  completionMode: Indexed
  template:
    spec:
      restartPolicy: Never
      containers:
      - command:
        - 'bash'
        - '-c'
        - 'echo "My partition: ${JOB_COMPLETION_INDEX}"'
        image: 'docker.io/library/bash'
        name: 'sample-load'
 

注意,完成模式是 1.21 版本中的一個(gè) alpha 特性。為了能夠在集群中使用它,請(qǐng)確保在 API 服務(wù)器和控制器管理器上啟用了 IndexedJob 特性門(mén)。

當(dāng)你運(yùn)行該示例時(shí),你將看到三個(gè)創(chuàng)建的 Pods 中的每一個(gè)都獲得了不同的完成索引。為了方便用戶(hù),控制平面設(shè)置 JOB_COMPLETION_INDEX 環(huán)境變量,但是你可以選擇設(shè)置自己的或?qū)⑺饕┞稙槲募?/p>

計(jì)劃

SIG Apps 設(shè)想可能有更多的完成模式,為 Job API 啟用更多的用例。我們歡迎你在kubernetes/kubernetes[5]中提出你的建議。

特別是,我們正在考慮一種 IndexedAndUnique 模式,其中索引不僅作為注釋可用,而且是 Pod 名稱(chēng)的一部分,類(lèi)似于 StatefulSet。這應(yīng)該有助于緊密耦合的 Pod 之間的通信。你可以參加這個(gè)公開(kāi)問(wèn)題[6]的討論。

總結(jié)

索引作業(yè)(Indexed Jobs)允許你在并行作業(yè)的作業(yè)之間靜態(tài)地劃分作業(yè)。SIG Apps 希望這個(gè)特性能夠促進(jìn)更多的批量工作負(fù)載遷移到 Kubernetes。

以上是“Kubernetes 1.21如何引入Indexed Jobs特性”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI