airflow.providers.cncf.kubernetes.operators.job¶
執行一個 Kubernetes Job。
屬性¶
類¶
執行一個 Kubernetes Job。 |
|
刪除一個 Kubernetes Job。 |
|
更新一個 Kubernetes Job。 |
模組內容¶
- class airflow.providers.cncf.kubernetes.operators.job.KubernetesJobOperator(*, job_template_file=None, full_job_spec=None, backoff_limit=None, completion_mode=None, completions=None, manual_selector=None, parallelism=None, selector=None, suspend=None, ttl_seconds_after_finished=None, wait_until_job_complete=False, job_poll_interval=10, deferrable=conf.getboolean('operators', 'default_deferrable', fallback=False), **kwargs)[原始碼]¶
基類:
airflow.providers.cncf.kubernetes.operators.pod.KubernetesPodOperator執行一個 Kubernetes Job。
參閱
有關如何使用此運算子的更多資訊,請參閱指南:KubernetesJobOperator
注意
如果您使用 Google Kubernetes Engine 並且 Airflow 未在同一叢集中執行,請考慮使用
GKEStartJobOperator,它簡化了授權過程。- 引數:
job_template_file (str | None) – job 模板檔案的路徑 (模板化)
full_job_spec (kubernetes.client.models.V1Job | None) – 完整的 JodSpec
backoff_limit (int | None) – 指定標記此 job 失敗前的重試次數。預設為 6
completion_mode (str | None) – CompletionMode 指定 Pod 完成情況的跟蹤方式。可以是 NonIndexed(預設)或 Indexed。
completions (int | None) – 指定此 job 應該執行的成功完成的 pod 的期望數量。
manual_selector (bool | None) – manualSelector 控制 pod 標籤和 pod 選擇器的生成。
parallelism (int | None) – 指定此 job 在任何給定時間應執行的最大期望 pod 數量。
selector (kubernetes.client.models.V1LabelSelector | None) – 此 V1JobSpec 的選擇器。
suspend (bool | None) – Suspend 指定 Job 控制器是否應該建立 Pods。
ttl_seconds_after_finished (int | None) – ttlSecondsAfterFinished 限制已完成執行(完成或失敗)的 Job 的生命週期。
wait_until_job_complete (bool) – 是否等待啟動的 job 完成執行(完成或失敗)。預設為 False。
job_poll_interval (float) – 輪詢 job 狀態的間隔秒數。預設為 10。在引數 wait_until_job_complete 設定為 True 時使用。
deferrable (bool) – 在可延遲模式下執行運算子。請注意,引數 wait_until_job_complete 必須設定為 True。
- template_fields: collections.abc.Sequence[str][原始碼]¶
- static deserialize_job_template_file(path)[原始碼]¶
從檔案生成 Job。
不幸的是,我們需要訪問 kubernetes 客戶端的私有方法
_ApiClient__deserialize_model。此問題正在此處跟蹤:https://github.com/kubernetes-client/python/issues/977。- 引數:
path (str) – 檔案的路徑
- 返回:
一個 kubernetes.client.models.V1Job
- 返回型別:
kubernetes.client.models.V1Job
- on_kill()[原始碼]¶
當任務例項被終止時,重寫此方法以清理子程序。
在運算子中使用 threading、subprocess 或 multiprocessing 模組都需要進行清理,否則會留下殭屍程序。
- build_job_request_obj(context=None)[原始碼]¶
根據 job 模板檔案、完整的 job spec 和其他運算子引數返回 V1Job 物件。
V1Job 屬性(按優先順序順序)派生自運算子引數、完整的 job spec、job 模板檔案。
- static reconcile_jobs(base_job, client_job)[原始碼]¶
合併 Kubernetes Job 物件。
- 引數:
base_job (kubernetes.client.models.V1Job) – 包含基礎屬性,如果這些屬性存在於 client job 中,則會被覆蓋;如果不存在,則保留。
client_job (kubernetes.client.models.V1Job | None) – 客戶端希望建立的 job。
- 返回:
合併後的 jobs
- 返回型別:
kubernetes.client.models.V1Job
這不能遞迴完成,因為某些欄位被覆蓋,而另一些欄位則被連線。
- static reconcile_job_specs(base_spec, client_spec)[原始碼]¶
合併 Kubernetes JobSpec 物件。
- 引數:
base_spec (kubernetes.client.models.V1JobSpec | None) – 包含基礎屬性,如果這些屬性存在於 client_spec 中,則會被覆蓋;如果不存在,則保留。
client_spec (kubernetes.client.models.V1JobSpec | None) – 客戶端希望建立的 spec。
- 返回:
合併後的 specs
- 返回型別:
kubernetes.client.models.V1JobSpec | None
- class airflow.providers.cncf.kubernetes.operators.job.KubernetesDeleteJobOperator(*, name, namespace, kubernetes_conn_id=KubernetesHook.default_conn_name, config_file=None, in_cluster=None, cluster_context=None, delete_on_status=None, wait_for_completion=False, poll_interval=10.0, **kwargs)[原始碼]¶
基類:
airflow.models.BaseOperator刪除一個 Kubernetes Job。
參閱
有關如何使用此運算子的更多資訊,請參閱指南:KubernetesDeleteJobOperator
- 引數:
name (str) – Job 的名稱。
namespace (str) – 在 kubernetes 中執行的名稱空間。
kubernetes_conn_id (str | None) – Kubernetes 叢集的kubernetes 連線 ID。
config_file (str | None) – Kubernetes 配置檔案路徑。(模板化) 如果未指定,預設值為
~/.kube/configin_cluster (bool | None) – 使用 in_cluster 配置執行 kubernetes 客戶端。
cluster_context (str | None) – 指向 kubernetes 叢集的上下文。in_cluster 為 True 時忽略。如果為 None,則使用 current-context。(模板化)
delete_on_status (str | None) – 根據 job 狀態執行刪除操作的條件。可選值:
None- 無論 job 狀態如何都刪除;“Complete” - 僅刪除成功完成的 job;“Failed” - 僅刪除失敗的 job。(預設:None)wait_for_completion (bool) – 是否等待 job 完成。(預設:
False)poll_interval (float) – 輪詢 job 狀態的間隔秒數。delete_on_status 引數設定時使用。(預設: 10.0)
- template_fields: collections.abc.Sequence[str] = ('config_file', 'name', 'namespace', 'cluster_context')[原始碼]¶
- class airflow.providers.cncf.kubernetes.operators.job.KubernetesPatchJobOperator(*, name, namespace, body, kubernetes_conn_id=KubernetesHook.default_conn_name, config_file=None, in_cluster=None, cluster_context=None, **kwargs)[source]¶
基類:
airflow.models.BaseOperator更新一個 Kubernetes Job。
參閱
有關如何使用此 operator 的更多資訊,請參閱指南: KubernetesPatchJobOperator
- 引數:
name (str) – Job 的名稱
namespace (str) – 在 kubernetes 中執行的 namespace
body (object) – 包含用於更新引數的 Job json 物件 https://kubernetes.club.tw/docs/reference/generated/kubernetes-api/v1.25/#job-v1-batch 例如
{"spec": {"suspend": True}}kubernetes_conn_id (str | None) – Kubernetes 叢集的kubernetes 連線 ID。
config_file (str | None) – Kubernetes 配置檔案路徑。(模板化) 如果未指定,預設值為
~/.kube/configin_cluster (bool | None) – 使用 in_cluster 配置執行 kubernetes 客戶端。
cluster_context (str | None) – 指向 kubernetes 叢集的上下文。in_cluster 為 True 時忽略。如果為 None,則使用 current-context。(模板化)
- template_fields: collections.abc.Sequence[str] = ('config_file', 'name', 'namespace', 'body', 'cluster_context')[source]¶