管理短暫的一次性工作(Job)

更新於 發佈於 閱讀時間約 6 分鐘

本篇說明何謂Job:

raw-image
  1. Job的類型
  2. Job controller
  3. Job 格式
  4. 暫停與重啟Job
  5. 範例
  6. 應用場景

1. Job的類型

以下表格很清楚的說明不同的Job類型與行為:

raw-image

2. Job controller

根據Job Spec建立Pod,並且持續監控Pod的狀態,直到成功結束。如果失敗,就根據restartPolicy(只支援OnFailure和Never, 不支援Always)決定是否創建新的Pod再次重試任務。

raw-image

3. Job 格式

  • spec.template格式同Pod
  • RestartPolicy只支援Never 或OnFailure
  • 單個Pod時,預設Pod成功運行後Job就結束
  • .spec.completions標記的Job結束需要成功運行的Pod個數,預設為1
  • .spec.parallelism標記出並行運作的Pod個數,預設為1
  • spec.activeDeadlineSeconds標記出失敗Pod的重試最大時間,超過就不會再繼續重試
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
# kubectl create -f job.yaml -n job
# kubectl discribe job pi -n job
# kubectl get pod --show-all -l job-name=pi -n job

※ 利用jsonpath取得POD ID並查看日誌
# pod=$(kubectl get pod -n job --selector=job-name=pi --output=jsonpath={.items.metadata.name})
# kubectl logs $pods
raw-image

4.暫停與重啟Job

從v1.21之後,就可以透過.spec.suspend暫停和重啟Job

apiVersion: batch/v1
kind: Job
metadata:
name: myjob
spec:
suspoend: true
parallelism: 1
completions: 5
template:
spec:
....

當Job暫停之後,Job conditions中就會出現一條Job暫停的event:

# kubectl get jobs/myjob -o yaml
apiVersion: batch/v1
kind: Job
# .metadata and .spec omitted
status:
conditions:
- lastProbeTime: "2021-02-05T13:14:33Z"
lastTransitionTime: "2021-02-05T13:14:33Z"
status: "True"
type: Suspended
startTime: "2021-02-05T13:13:48Z"

5.範例

### 執行單一Job
apiVersion: batch/v1
kind: Job
metadata:
name: finalcountdown
spec:
template:
metadata:
name: finalcountdown
spec:
containers:
- name: counter
image: busybox
command:
- bin/sh
- -c
- "for i in 9 8 7 6 5 4 3 2 1 ; do echo $i ; done"
restartPolicy: Never
# kubectl create -f simplejob.yaml -n simple-job
# kubectl get job -n simple-job
NAME COMPLETIONS DURATION AGE
finalcountdown 1/1 6s 9s

# kubectl describe jobs/finalcountdown -n simple-job
# kubectl log finalcountdown-xxxxx
raw-image
raw-image

6.應用場景

由於Job主要用於管理一次性任務或批次性任務,可以想像到有以下應用場景可能會適用:

  • 批次任務:適用在需要定期執行的任務,例如資料清洗、ETL作業、日誌分析、備份任務。透過建立Job來確保任務只會運行一次,並且在成功後就會停止。
  • 容器化應用初始化:在Kubernetes中部署容器化應用時,可以用來執行初始化任務,例如初始化資料庫、載入設定、設定環境變數等等。當任務結束,應用服務就可以啟動應用服務本身的初始化。
  • 並行性的任務:可以使用Job來建立多個Pod,加快任務的執行速度。
  • 資源清理:在任務執行完畢後,可用來清理或刪除資源,例如刪除臨時檔案、關閉不需要的容器或執行資源釋放。

跟據需求的變化,Job還可以有更多可應用的場景,只要理解Job的應用特性就可以想出更多有彈性的做法來協助管理整個平台上的任務。

留言
avatar-img
留言分享你的想法!
avatar-img
超健忘閒人的沙龍
15會員
40內容數
記錄IT社畜的自我學習筆記,如同專題名稱,主要是怕自已忘記自已做過什麼、學到什麼。索性就分享我自已在學習Kubernetes這條路上的各種測試、學習心得。
2024/05/08
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
2024/05/08
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
2024/04/19
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
2024/04/19
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
2024/04/09
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
2024/04/09
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
我們可能會有一種迷思,不管開發什麼系統,開發團隊都袛會有一種方式來工作。反正不管怎麼樣,系統最終也一定是能開發出來的。那麼選擇開發生命週期又跟我何干?本篇將會介紹專案經理應該如何為不同特性的專案選擇最合適的管理策略,即生命週期。
Thumbnail
我們可能會有一種迷思,不管開發什麼系統,開發團隊都袛會有一種方式來工作。反正不管怎麼樣,系統最終也一定是能開發出來的。那麼選擇開發生命週期又跟我何干?本篇將會介紹專案經理應該如何為不同特性的專案選擇最合適的管理策略,即生命週期。
Thumbnail
企業面對大專案時,將其分解成可執行的小任務,有助於實現目標。以提升銷售額為例,拆解為四個要素,並提供增加流量、轉換率、客單價和回購率的策略。另外,還必須設計可量化的指標及追蹤回饋。這些建議對於創作型工作和知識型工作者來說,同樣可以利用該策略來提高工作效率。
Thumbnail
企業面對大專案時,將其分解成可執行的小任務,有助於實現目標。以提升銷售額為例,拆解為四個要素,並提供增加流量、轉換率、客單價和回購率的策略。另外,還必須設計可量化的指標及追蹤回饋。這些建議對於創作型工作和知識型工作者來說,同樣可以利用該策略來提高工作效率。
Thumbnail
本文探討專案管理的真正意義,以及專案經理真正的價值是什麼。同時討論專案經理必修的最重要技能。
Thumbnail
本文探討專案管理的真正意義,以及專案經理真正的價值是什麼。同時討論專案經理必修的最重要技能。
Thumbnail
在部門管理中,文件化將部門職掌呈現出來,是非常、非常、非常關鍵的作業。本文將說明為何要定義與如何定義部門職掌的方式。
Thumbnail
在部門管理中,文件化將部門職掌呈現出來,是非常、非常、非常關鍵的作業。本文將說明為何要定義與如何定義部門職掌的方式。
Thumbnail
本篇說明在Kubernetes平台上的Job資源類型的類型、實務、應用場景
Thumbnail
本篇說明在Kubernetes平台上的Job資源類型的類型、實務、應用場景
Thumbnail
1. 時間管理 “提供8小時工作日的詳細時間表,優化能量水準和任務多樣性,以確保最大的生產力。”  2. 任務優先順序  “列出確定任務優先順序時要考慮的關鍵因素,並創建一個決策矩陣,根據緊急性和重要性對任務進行排名。”
Thumbnail
1. 時間管理 “提供8小時工作日的詳細時間表,優化能量水準和任務多樣性,以確保最大的生產力。”  2. 任務優先順序  “列出確定任務優先順序時要考慮的關鍵因素,並創建一個決策矩陣,根據緊急性和重要性對任務進行排名。”
Thumbnail
在上回,我們已經把工作視覺化成看板,但這只是第一步,要想用看板方法優化工作的流程,我們得設置 WIP 限制,讓團隊開始知道瓶頸在哪裡,然後才能開始改善,這一回就來看 WIP 限制的設置。
Thumbnail
在上回,我們已經把工作視覺化成看板,但這只是第一步,要想用看板方法優化工作的流程,我們得設置 WIP 限制,讓團隊開始知道瓶頸在哪裡,然後才能開始改善,這一回就來看 WIP 限制的設置。
Thumbnail
在上一回 說明看板方法相關的精實精神與原則與實務,這一回則是來設計看板,包含看板的範圍應該多廣、有哪些狀態、工作的顆粒度,以及 DoD 的呈現。
Thumbnail
在上一回 說明看板方法相關的精實精神與原則與實務,這一回則是來設計看板,包含看板的範圍應該多廣、有哪些狀態、工作的顆粒度,以及 DoD 的呈現。
Thumbnail
為什麼要對任務進行排班呢?這篇文章將會告訴你,在作業系統當中,是如何利用排班演算法來處理交互式與非交互式任務,以及如何提升CPU使用率!
Thumbnail
為什麼要對任務進行排班呢?這篇文章將會告訴你,在作業系統當中,是如何利用排班演算法來處理交互式與非交互式任務,以及如何提升CPU使用率!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News