執行工作
建立工作之後,您可以根據工作的定義來執行工作,也可以使用置換內容來執行工作。 從主控台或使用 CLI 執行您的工作。
每次工作執行時,都會將所參照儲存器映像檔的最新版本用於工作執行,除非映像檔已指定標籤。 如果為映像檔指定標籤,則會使用標記映像檔來執行工作。
如果可能的話,會平行執行所提交的批次工作。 如果提交的作業的數量或大小超過配置的配額限制(例如運行實例的最大數量),則 Code Engine 會將作業排隊並延遲運行它們,直到有足夠的作業完成。 有關批次作業的更多信息,請參閱 批次作業工作負載。 有關作業配額和限制(包括內存和 CPU)的更多信息,請參閱 Code Engine 的限制和配額。
由訂閱建立的工作執行會在十分鐘後被刪除。 如需訂閱的相關資訊,請參閱 開始使用訂閱。
完成的工作執行會在一周後自動刪除。
從主控台執行工作
當您建立工作時,可以立即執行它。 不過,您可以隨時提交並重新提交工作。 您也可以提交或重新提交先前建立的工作。
-
請前往您的職缺頁面。
- 在 Code Engine 的「專案」頁面中,點選您的專案名稱。
- 按一下「工作」,然後按一下「工作」分頁。
- 點擊您要執行的工作名稱。
-
按一下 提交工作,以開啟「提交工作」對話框。 檢閱並選擇性地變更預設配置值,例如實例、CPU、記憶體、工作重試次數及工作逾時。 如需這些選項的相關資訊,請參閱 用於建立及執行工作的選項。
-
按一下 提交工作,以執行您的工作。 系統會在工作詳細資料頁面上顯示工作實例的狀態。
-
如果任一工作實例無法執行,請排除錯誤,然後按一下重新執行失敗的索引,以重新執行失敗索引的工作。 從「提交作業」窗格,檢視並選擇變更組態值。 陣列索引」部分會自動列出失敗工作執行實體的索引。 檢閱並選擇性地變更配置值之後,請按一下 提交工作 以執行您的工作。
若要排除常見的作業執行索引錯誤,請參閱《 了解作業執行索引為何會失敗 》。
您也可以重新執行現有的工作執行。 若要再次執行特定的工作執行,請按一下 工作執行 標籤,然後按一下您要使用的工作執行名稱。 按一下 重新執行,以重新執行此工作執行。
您可以在新增記載功能之後檢視工作日誌。 如需相關資訊,請參閱檢視日誌。
每當執行工作時,都會將 JOB_INDEX 環境變數自動注入至工作的每一個實例。 有關由 Code Engine 設定的環境變數的更多資訊,請參閱 。我看到一些並非由我建立的 configmap。 我可以刪除它們嗎?。
使用 CLI 執行工作
開始之前
- 設定 Code Engine 環境。
- 建立工作。
若要使用 CLI 執行工作,請使用 jobrun submit 指令。 如需選項的完整清單,請參閱 ibmcloud ce jobrun submit 指令。
使用 CLI,您可以 根據工作配置執行工作,也可以 在不先建立工作配置的情況下執行工作。
根據工作配置使用 CLI 執行工作
透過建立工作配置,您可以更輕鬆地多次執行工作。
例如,下列 jobrun submit 指令會建立五個新實例,以執行已定義 myjob 工作配置中指定的容器映像檔。 若要參照已定義的工作配置,請使用 --job 選項。 如果指定 --job 選項,則不需要 --name 選項,但下列範例指令會指定 --name 選項,以提供此工作執行的名稱。
對於工作,cpu 的預設值為 1,而 memory 的預設值為 4G。 每個實例都會套用資源限制及要求,因此每個實例都會取得 4 G 記憶體及 1 vCPU。 此工作配置 5 \ * 4 G = 20 G 記憶體及 5 \ * 1 vCPU = 5 vCPUs。
ibmcloud ce jobrun submit --name testjobrun --job myjob --array-indices "1 - 5"
下表彙總在此範例中與 jobrun submit 指令搭配使用的選項。 如需指令及其選項的相關資訊,請參閱 ibmcloud ce jobrun submit 指令。
| 選項 | 說明 |
|---|---|
--name |
此工作執行的名稱。 如果您未指定 --job 值,則需要 --name 和 --image 值。 請使用在專案內唯一的名稱。-名稱必須以小寫英數字元開頭及結尾。 -名稱必須是 53 個字元或更少,且可以包含字母、數字、句點 (.) 及連字號 (-)。 |
--job |
要執行之工作的名稱。 如果未指定 --name 和 --image 值,則需要此值。 |
--array-indices |
指定用於執行作業的實例的索引。 指定索引清單或範圍,以連字號(-)或逗號(,)分隔;例如,1,3,6,9 或者 1-5,7-8,10。 最大值為 999999。 這是選用值。 預設值為 0。 |
每當執行工作時,都會將 JOB_INDEX 環境變數自動注入至工作的每一個實例。 有關由 Code Engine 設定的環境變數的更多資訊,請參閱 。我看到一些並非由我建立的 configmap。 我可以刪除它們嗎?。
使用 CLI 執行工作,而不先建立工作配置
使用 CLI,您可以提交工作執行,而無需先建立工作配置。 您可以在 job create 指令可用的 jobrun submit 及 jobrun resubmit 指令上指定相同的配置選項。
例如,下列 ibmcloud ce jobrun submit 指令會提交工作執行,以使用 myregistry 存取資訊來參照 us.icr.io/mynamespace/myhello_bld 映像檔。 因為此工作執行未參照已定義的工作配置,所以您必須指定
--name 及 image 選項的值。 使用 --name 來指定此工作執行的名稱,並使用 --image 來提供用於此工作執行的映像檔名稱。 --array-indices 選項會建立五個新實例來執行容器映像檔。 對於工作執行,cpu 的預設值為 1,而 memory 的預設值為 4G。 每個實例都會套用資源限制及要求,因此每個實例都會取得 4 G 記憶體及 1 vCPU。 此工作執行會配置 5 \ * 4 G = 20 G 記憶體及 5 \ * 1 vCPU = 5 vCPUs。
ibmcloud ce jobrun submit --name myhellojob-jobruna --image us.icr.io/mynamespace/myhello_bld --registry-secret myregistry --array-indices "1 - 5"
執行 jobrun get -n myhellojob-jobruna 指令,以檢查工作執行狀態。
輸出範例
[...]
Name: myhellojob-jobruna
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 3m6s
Created: 2021-06-04T11:56:22-04:00
Image: us.icr.io/mynamespace/myhello_bld
Resource Allocation:
CPU: 1
Ephemeral Storage: 400M
Memory: 4G
Registry Secrets:
myregistry
Runtime:
Mode: task
Array Indices: 1 - 5
Array Size: 5
JOP_ARRAY_SIZE Value: 5
Max Execution Time: 7200
Retry Limit: 3
Status:
Completed: 9s
Instance Statuses:
Succeeded: 5
Conditions:
Type Status Last Probe Last Transition
Pending True 16s 16s
Running True 13s 13s
Complete True 9s 9s
Events:
Type Reason Age Source Messages
Normal Updated 11s (x8 over 18s) batch-job-controller Updated JobRun "myhellojob-jobruna"
Normal Completed 11s batch-job-controller JobRun completed successfully
Instances:
Name Running Status Restarts Age
myhellojob-jobruna-1-0 0/1 Succeeded 0 18s
myhellojob-jobruna-2-0 0/1 Succeeded 0 18s
myhellojob-jobruna-3-0 0/1 Succeeded 0 18s
myhellojob-jobruna-4-0 0/1 Succeeded 0 18s
myhellojob-jobruna-5-0 0/1 Succeeded 0 18s
使用 CLI 提交 (或重新提交) 且未參照已定義工作配置的工作執行無法從主控台檢視。
使用 CLI 重新提交工作
如果您要根據前一個工作執行的配置重新提交工作執行,請使用 jobrun resubmit 指令。 此指令需要前一個工作執行的名稱,並容許其他選用引數。 如需選項的完整清單,請參閱 ibmcloud ce jobrun resubmit 指令。
例如,下列 jobrun resubmit 指令會重新提交 testjobrun 工作執行。
ibmcloud ce jobrun resubmit --jobrun testjobrun
輸出範例
Getting job run 'testjobrun'...
Getting job 'myjob'...
Rerunning job run 'myjob-jobrun-fji48'...
Run 'ibmcloud ce jobrun get -n myjob-jobrun-fji48' to check the job run status.
例如,下列 jobrun resubmit 指令會重新提交 myhellojob-jobruna 工作執行,該工作執行是在未先建立工作配置的情況下執行。 因為參照的工作執行沒有相關的工作配置,所以您必須指定 --name 選項,以指定此工作執行的名稱。
ibmcloud ce jobrun resubmit --jobrun myhellojob-jobruna --name myhellojob-jobrunb
執行 jobrun get -n myhellojob-jobrunb 指令,以檢查工作執行狀態。
輸出範例
Getting jobrun 'myhellojob-jobrunb'...
[...]
Name: myhellojob-jobrunb
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 3m6s
Created: 2021-06-04T11:56:22-04:00
Image: us.icr.io/mynamespace/myhello_bld
Resource Allocation:
CPU: 1
Ephemeral Storage: 400M
Memory: 4G
Registry Secrets:
myregistry
Runtime:
Mode: task
Array Indices: 1 - 5
Array Size: 5
JOP_ARRAY_SIZE Value: 5
Max Execution Time: 7200
Retry Limit: 3
Status:
Completed: 91s
Instance Statuses:
Succeeded: 5
Conditions:
Type Status Last Probe Last Transition
Pending True 96s 96s
Running True 92s 92s
Complete True 91s 91s
Events:
Type Reason Age Source Messages
Normal Updated 93s (x7 over 97s) batch-job-controller Updated JobRun "myhellojob-jobrunb"
Normal Completed 93s batch-job-controller JobRun completed successfully
Instances:
Name Running Status Restarts Age
myhellojob-jobrunb-1-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-2-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-3-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-4-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-5-0 0/1 Succeeded 0 97s
使用 CLI 提交 (或重新提交) 且未參照已定義工作配置的工作執行無法從主控台檢視。
下一步
-
既然您的工作已建立,請考慮讓您的工作以事件驅動。 透過使用事件訂閱,您可以透過 定期排程 來觸發工作,或設定工作以回應 檔案上傳 之類的事件。
-
您可以在下列 任何 方式中 更新工作 及其參照程式碼,與您建立或先前更新工作的方式無關。
-
如果您具有容器映像檔,則根據 Open Container Initiative(OCI)標準,您只需要提供映像檔的參照,這會在您建立 (或更新) 工作時指向容器登錄的位置。 您可以從 公用登錄 或 專用登錄 中的映像檔建立 (或更新) 工作,然後從工作執行中存取參照的映像檔。
如果您已使用
job create指令建立工作,並指定--build-source選項以從本端或儲存庫來源建置容器映像檔,且您想要將工作變更為指向不同的容器映像檔,則必須先從工作中移除建置的關聯。 例如,執行ibmcloud ce job update -n JOB_NAME --build-clear。 從工作中移除建置的關聯之後,您可以更新工作以參照不同的映像檔。 -
如果您從位於 Git 儲存庫中的原始碼開始,則可以選擇讓 Code Engine 負責從來源建置映像檔,以及使用 單一 作業來建立 (或更新) 工作。 在此實務範例中,Code Engine 會將映像檔上傳至 IBM Cloud® Container Registry。 若要進一步瞭解,請參閱 從儲存庫原始碼建立工作。 如果您想要進一步控制映像檔的建置,則可以在建立 (或更新) 工作並執行工作之前,選擇使用 Code Engine 來 建置映像檔。
-
如果您是從位於本端工作站上的原始碼開始,則可以選擇讓 Code Engine 負責從來源建置映像檔,並使用 單一 CLI 指令來建立工作。 在此實務範例中,Code Engine 會將映像檔上傳至 IBM Cloud® Container Registry。 若要進一步瞭解,請參閱 使用 CLI 從本端原始碼建立工作。 如果您想要進一步控制映像檔的建置,則可以在建立 (或更新) 工作並執行工作之前,選擇使用 Code Engine 來 建置映像檔。
例如,您可以選擇讓 Code Engine 處理本端來源的建置,同時發展工作的來源開發。 然後,在映像檔成熟之後,您可以更新工作以參照您想要的特定映像檔。 您可以視需要重複此程序。
當您執行更新的工作時,除非為映像檔指定標籤,否則會使用所參照儲存器映像檔的最新版本來執行工作。 如果為映像檔指定標籤,則會使用標記映像檔來執行工作。
-
尋找更多程式碼範例? 請參閱 「IBM Cloud Code Engine」GitHub 儲存庫中的範例。