Kubernetes – Jobs

wongchaofan發表於2024-06-05

在 Kubernetes 世界中,作業被視為充當任務的主管或控制器的物件。Kubernetes 作業將建立一個 Pod,監控任務,並在該 Pod 因某種原因失敗時重新建立另一個 Pod。任務完成後,它將終止 Pod。與部署和 Pod 不同,您可以在 Kubernetes 中指定作業,該作業可以是始終一個作業或基於時間的作業,也可以是基於任務的作業。這允許您容忍可能導致意外 Pod 終止的錯誤或故障。

當您提交作業時,它將根據要求建立一個或多個 Pod,完成作業中定義的任務,並保持 Pod 執行,直到任務完成。作業會在 Pod 完成時跟蹤成功完成的情況。作業暫停時,其所有活動 Pod 都將被刪除,直到作業重新啟動。

Job Types:

Non-Parallel Job: 一種簡單作業,其中定義了單個任務並將建立一個 pod,並且在成功完成作業後,pod 將終止。

Parallel Job with fixed completion count:複雜任務被定義為需要多個 pod 來完成的作業,該作業可以並行執行,並且每個 pod 根據配置 ` .spec.completions ` 中指定的數字獲得 0 到 .spec.completions-1 之間的唯一索引。當成功指定完成 Pod 時,該作業將被視為成功完成。

Parallel Job with a work queue: 在具有工作佇列的並行作業中,多個 Pod 並行執行,以妥善完成複雜資料。為了決定每個 Pod 應該關注什麼,Pod 需要相互協作或與外部服務協作。例如,Pod 可能會從工作佇列中批次提取最多 N 個專案。每個 Pod 都能夠自主確定其所有對等體是否已完成,從而確定整個作業是否已完成。

用例:

  1. 作業執行某些系統操作任務的簡單用例。例如,要設定叢集或服務,您需要在多個位置執行一些任務。您可以建立一個作業並反覆使用它來啟動相同的服務或執行類似的任務。
  2. 另一個用例是執行一些資料備份或一些計算任務。更復雜的用例可能是一系列需要按順序執行的任務,其中將建立作業 pod 並進行管理,直到滿足完成次數。作為建立服務的一部分,Helm Charts 使用作業在叢集上執行安裝、設定或測試命令。

關鍵術語:

  1. Kubernetes:Kubernetes 是 Google 推出的用於編排容器的開源系統。可自動執行圍繞容器化應用程式的大多數操作任務。
  2. Pod: Kubernetes 允許您構建和控制的最小可部署計算單元稱為 Pod。它可以是單個容器,也可以是多個容器的組合。
  3. Minikube:Kubernetes 的本地版本,可幫助您在本地開始並測試您的工作。

設定作業的步驟:

今天,我們將考慮一個使用 Docker Busybox 映象並 ping geeksforgeeks.org 的作業設定示例。

步驟 1.啟動你的 minikube

$ minikube start

第 2 步.建立 YAML 格式的作業定義檔案。

$ cat ping-job.yaml

步驟 3.將作業定義提交給 Kubectl,您應該在執行時看到作業建立訊息。

$ kubectl apply -f ping-job.yaml

步驟4.使用獲取作業列出作業,我們可以看到作業完成的數量以及持續時間和年齡。

 $ kubectl get jobs

步驟 5.獲取作業詳細資訊。

$ kubectl describe job ping 

步驟 6.讓 pod 為我們的工作執行,在這裡您可以看到 pod 的名稱、有多少個容器、它的狀態、是否重新啟動以及 pod 的使用年限。

$ kubectl get pods

您可以檢查容器的日誌。

要刪除作業,請使用 kubectl delete 命令,如果刪除作業,與其關聯的 pod 也將被刪除。

$ kubectl delete job ping
$kubectl get job

相關文章