執行工作

建立工作之後,您可以根據工作的定義來執行工作,也可以使用置換內容來執行工作。 從主控台或使用 CLI 執行您的工作。

每次工作執行時,都會將所參照儲存器映像檔的最新版本用於工作執行,除非映像檔已指定標籤。 如果為映像檔指定標籤,則會使用標記映像檔來執行工作。

如果可能的話,會平行執行所提交的批次工作。 如果提交的作業的數量或大小超過配置的配額限制(例如運行實例的最大數量),則 Code Engine 會將作業排隊並延遲運行它們,直到有足夠的作業完成。 有關批次作業的更多信息,請參閱 批次作業工作負載。 有關作業配額和限制(包括內存和 CPU)的更多信息,請參閱 Code Engine 的限制和配額

由訂閱建立的工作執行會在十分鐘後被刪除。 如需訂閱的相關資訊,請參閱 開始使用訂閱

完成的工作執行會在一周後自動刪除。

從主控台執行工作

當您建立工作時,可以立即執行它。 不過,您可以隨時提交並重新提交工作。 您也可以提交或重新提交先前建立的工作。

  1. 請前往您的職缺頁面。

    1. Code Engine 的「專案」頁面中,點選您的專案名稱。
    2. 按一下「工作」,然後按一下「工作」分頁。
    3. 點擊您要執行的工作名稱。
  2. 按一下 提交工作,以開啟「提交工作」對話框。 檢閱並選擇性地變更預設配置值,例如實例、CPU、記憶體、工作重試次數及工作逾時。 如需這些選項的相關資訊,請參閱 用於建立及執行工作的選項

  3. 按一下 提交工作,以執行您的工作。 系統會在工作詳細資料頁面上顯示工作實例的狀態。

  4. 如果任一工作實例無法執行,請排除錯誤,然後按一下重新執行失敗的索引,以重新執行失敗索引的工作。 從「提交作業」窗格,檢視並選擇變更組態值。 陣列索引」部分會自動列出失敗工作執行實體的索引。 檢閱並選擇性地變更配置值之後,請按一下 提交工作 以執行您的工作。

若要排除常見的作業執行索引錯誤,請參閱《 了解作業執行索引為何會失敗 》。

您也可以重新執行現有的工作執行。 若要再次執行特定的工作執行,請按一下 工作執行 標籤,然後按一下您要使用的工作執行名稱。 按一下 重新執行,以重新執行此工作執行。

您可以在新增記載功能之後檢視工作日誌。 如需相關資訊,請參閱檢視日誌

每當執行工作時,都會將 JOB_INDEX 環境變數自動注入至工作的每一個實例。 有關由 Code Engine 設定的環境變數的更多資訊,請參閱 。我看到一些並非由我建立的 configmap。 我可以刪除它們嗎?

使用 CLI 執行工作

開始之前

若要使用 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 submitjobrun resubmit 指令上指定相同的配置選項。

例如,下列 ibmcloud ce jobrun submit 指令會提交工作執行,以使用 myregistry 存取資訊來參照 us.icr.io/mynamespace/myhello_bld 映像檔。 因為此工作執行未參照已定義的工作配置,所以您必須指定 --nameimage 選項的值。 使用 --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 儲存庫中的範例