Kubernetes - 作業 (zuòyè)



作業的主要功能是建立一個或多個 Pod,並跟蹤 Pod 的成功情況。它們確保指定數量的 Pod 成功完成。當指定數量的 Pod 成功執行完成時,作業即被認為完成。

建立作業 (chuàngjiàn zuòyè)

使用以下命令建立作業:

apiVersion: v1
kind: Job ------------------------> 1
metadata:
   name: py
   spec:
   template:
      metadata
      name: py -------> 2
      spec:
         containers:
            - name: py ------------------------> 3
            image: python----------> 4
            command: ["python", "SUCCESS"]
            restartPocliy: Never --------> 5

在上面的程式碼中,我們定義了:

  • kind: Job → 我們定義 kind 為 Job,這將告訴 kubectl 使用的 yaml 檔案用於建立作業型別的 Pod。

  • Name: py → 這是我們使用的模板名稱,spec 定義了模板。

  • name: py → 我們在容器規範下給出了名稱 py,這有助於識別將由此建立的 Pod。

  • Image: python → 我們將拉取的映象,用於建立將在 Pod 內執行的容器。

  • restartPolicy: Never → 此映象重啟條件設定為 Never,這意味著如果容器被終止或失敗,它將不會自行重啟。

我們將使用以下命令以及名為 py.yaml 儲存的 yaml 檔案來建立作業。

$ kubectl create –f py.yaml

上述命令將建立一個作業。如果要檢查作業的狀態,請使用以下命令。

$ kubectl describe jobs/py

上述命令將建立一個作業。如果要檢查作業的狀態,請使用以下命令。

定時作業 (dìngshí zuòyè)

Kubernetes 中的定時作業使用 Cronetes,它接收 Kubernetes 作業並在 Kubernetes 叢集中啟動它們。

  • 排程作業將在指定的時間點執行 Pod。
  • 為此建立一個週期性作業,它會自動呼叫自身。

注意 - 定時作業功能由 1.4 版本支援,透過在啟動 API 伺服器時傳遞 –runtime-config=batch/v2alpha1 來啟用 batch/v2alpha1 API。

我們將使用與建立作業相同的 yaml 檔案,並將其設定為定時作業。

apiVersion: v1
kind: Job
metadata:
   name: py
spec:
   schedule: h/30 * * * * ? -------------------> 1
   template:
      metadata
         name: py
      spec:
         containers:
         - name: py
         image: python
         args:
/bin/sh -------> 2
-c
ps –eaf ------------> 3
restartPocliy: OnFailure

在上面的程式碼中,我們定義了:

  • schedule: h/30 * * * * ? → 將作業排程為每 30 分鐘執行一次。

  • /bin/sh: 這將使用 /bin/sh 進入容器。

  • ps –eaf → 將在機器上執行 ps -eaf 命令,並列出容器內所有正在執行的程序。

當我們嘗試在指定時間點構建和執行一組任務然後完成程序時,此定時作業概念非常有用。

廣告 (guǎnggào)