Google 工作表

關於 Tasks

與應用程式 (長時間執行的程序) 不同,工作會在一段時間後停止執行。工作會根據父項應用程式的設定,在各自的容器中執行,並可設定為使用有限的資源 (例如 CPU/記憶體/暫時性磁碟儲存空間)。

工作用途

  • 遷移資料庫
  • 執行批次工作 (已排程/未排程)
  • 傳送電子郵件
  • 轉換資料 (ETL)
  • 處理資料 (上傳/備份/下載)

Tasks 的運作方式

工作會以非同步方式執行,並獨立於父項應用程式或在同一應用程式中執行的其他工作。為執行工作而建立的應用程式不會建立或指派路徑,且會略過「Run」生命週期。原始碼上傳建構生命週期仍會繼續,並在推送應用程式後產生用於執行工作項的容器映像檔 (請參閱「部署應用程式」一文,瞭解應用程式生命週期)。

工作生命週期如下:

  1. 您可以使用 kf push APP_NAME --task 指令推送應用程式,以便執行工作。
  2. 您可以使用 kf run-task APP_NAME 指令在應用程式上執行工作。工作會繼承與應用程式繫結的環境變數、服務繫結、資源分配、啟動指令和安全群組。
  3. Kf 會使用應用程式中的值和 run-task 指令中的參數,建立 Tekton PipelineRun
  4. Tekton PipelineRun 會建立 Kubernetes Pod,並根據應用程式和工作中的設定啟動容器。
  5. 工作執行作業停止 (工作結束或手動終止),底層 Pod 會停止或終止。系統會保留已停止的任務 Pod,因此您可以透過 kf logs APP_NAME --task 指令存取任務記錄。
  6. 如果您在工作停止前終止工作,Tekton PipelineRun 就會取消 (請參閱「取消 PipelineRun」),底層 Pod 和記錄也會一併刪除。如果已設定,系統會將終止的工作記錄傳送至叢集層級記錄串流 (例如 Stackdriver、Fluentd)。
  7. 如果應用程式執行的工作數量超過 500 個,系統會自動刪除最舊的工作。

工作保留政策

工作會在 Kubernetes 叢集中建立為自訂資源,因此請務必不要耗盡基礎 etcd 資料庫的空間。根據預設,Kf 只會保留每個應用程式的最新 500 項工作。一旦工作數量達到 500 項,系統就會自動刪除最舊的工作 (以及底層 Pod 和記錄)。

工作記錄和執行記錄

您可以使用 kf logs APP_NAME --task 指令,取得工作輸出至 STDOUT 或 STDERR 的任何資料或訊息。叢集層級記錄機制 (例如 Stackdriver、Fluentd) 會將工作記錄傳送至已設定的記錄目的地。