Pod、Job、Workflow 是三層:執行載體、任務保證、流程調度
這三個詞常被混用,但它們不是同義詞也不是替代品,而是疊在一起的三個層級:誰負責跑、誰負責確保跑完、誰負責決定跑的順序。
[ Workflow(流程控制) ]
|
+---> [ Job A ] ---> 建立並監控 ---> [ Pod 1 ]、[ Pod 2 ]
|
+---> [ Job B ] ---> 建立並監控 ---> [ Pod 3 ]
| Pod | Job | Workflow | |
|---|---|---|---|
| 角色 | 實際的執行載體 | 確保任務完成的控制器 | 多任務調度與拓撲的指揮 |
| 生命週期 | 跑完或出錯就結束,不自我修復 | 確保 Pod 成功跑完指定次數才結束 | 所有關聯的 Job 依序跑完才算結束 |
| 關注點 | 容器如何共享網路與儲存 | 任務有沒有成功執行完 | 步驟的先後順序、條件分支 |
| 例子 | 跑一個 Python 腳本 | 一次性的 DB migration | 撈數據 → 清洗 → 訓練 → 產報表 |
各層的定義
- Pod:Kubernetes 最小的部署單元,可包含一或多個容器。短暫、沒有生命週期保障——失敗了不會自己重啟 → Pod 不會自己重啟,自我修復來自控制器
- Job:一種控制器,專門管「一次性任務」。它建立 Pod 並確保它們成功執行到 Completed;Pod 中途死掉就再開一個新的,直到任務完成。
- Workflow:把多個步驟(通常是多個 Job)串成完整業務流程,處理步驟之間的依賴與邏輯(A 完成後 B、C 才能並行,都成功才跑 D)。K8s 生態系裡常用 Argo Workflows 或 Airflow 實作——注意它不是 K8s 原生物件,而是上層工具提供的。
工廠比喻
Pod 是工人(動手鎖螺絲,倒下了不會自己站起來)、Job 是組長(盯著一台機器組裝完,工人倒了就換人上,機器組好組長就下班)、Workflow 是生產線總監(規劃備料 → 組裝 → 品檢的整條流水線)。