airflow.providers.cncf.kubernetes.operators.job

执行 Kubernetes 作业。

模块内容

KubernetesJobOperator

执行 Kubernetes 作业。

KubernetesDeleteJobOperator

删除 Kubernetes 作业。

KubernetesPatchJobOperator

更新 Kubernetes 作业。

属性

log

airflow.providers.cncf.kubernetes.operators.job.log[来源]
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 作业。

另请参阅

有关如何使用此操作符的更多信息,请参阅指南:KubernetesJobOperator

注意

如果您使用 Google Kubernetes Engine 并且 Airflow 没有在同一集群中运行,请考虑使用 GKEStartJobOperator,这简化了授权过程。

参数
  • job_template_file (str | None) – 作业模板文件的路径(已模板化)

  • full_job_spec (kubernetes.client.models.V1Job | None) – 完整的 JodSpec

  • backoff_limit (int | None) – 指定在将此作业标记为失败之前重试的次数。默认为 6

  • completion_mode (str | None) – CompletionMode 指定如何跟踪 Pod 完成。它可以是 NonIndexed (默认)或 Indexed

  • completions (int | None) – 指定作业应运行的成功完成的 pod 的所需数量。

  • manual_selector (bool | None) – manualSelector 控制 pod 标签和 pod 选择器的生成。

  • parallelism (int | None) – 指定作业应在任何给定时间运行的最大所需 pod 数。

  • selector (kubernetes.client.models.V1LabelSelector | None) – 此 V1JobSpec 的选择器。

  • suspend (bool | None) – Suspend 指定作业控制器是否应该创建 Pod。

  • ttl_seconds_after_finished (int | None) – ttlSecondsAfterFinished 限制已完成执行(完成或失败)的作业的生命周期。

  • wait_until_job_complete (bool) – 是否等待直到启动的作业完成执行(完成或失败)。默认为 False。

  • job_poll_interval (float) – 轮询作业状态之间的间隔(秒)。默认为 10。如果参数 wait_until_job_complete 设置为 True,则使用此值。

  • deferrable (bool) – 在可延迟模式下运行操作符。请注意,参数 wait_until_job_complete 必须设置为 True。

template_fields: collections.abc.Sequence[str][来源]
hook()[来源]
job_client()[来源]
create_job(job_request_obj)[来源]
execute(context)[来源]

根据 deferrable 参数异步或同步运行 pod。

execute_deferrable()[来源]
execute_complete(context, event, **kwargs)[来源]
static deserialize_job_template_file(path)[来源]

从文件生成作业。

不幸的是,我们需要访问 kubernetes 客户端中的私有方法 _ApiClient__deserialize_model。此问题在此处跟踪:https://github.com/kubernetes-client/python/issues/977

参数

path (str) – 文件的路径

返回

kubernetes.client.models.V1Job

返回类型

kubernetes.client.models.V1Job

on_kill()[source]

当任务实例被终止时,覆盖此方法以清理子进程。

在操作符中使用 threading、subprocess 或 multiprocessing 模块时,需要进行清理,否则会留下僵尸进程。

build_job_request_obj(context=None)[source]

基于作业模板文件、完整作业规范和其他操作符参数返回 V1Job 对象。

V1Job 属性派生自(按优先级顺序)操作符参数、完整作业规范和作业模板文件。

static reconcile_jobs(base_job, client_job)[source]

合并 Kubernetes 作业对象。

参数
  • base_job (kubernetes.client.models.V1Job) – 具有基本属性,如果它们存在于客户端作业中则会被覆盖,如果不存在于客户端作业中则会保留

  • client_job (kubernetes.client.models.V1Job | None) – 客户端想要创建的作业。

返回

合并后的作业

返回类型

kubernetes.client.models.V1Job

这不能以递归方式完成,因为某些字段会被覆盖,而某些字段会被连接起来。

static reconcile_job_specs(base_spec, client_spec)[source]

合并 Kubernetes JobSpec 对象。

参数
  • base_spec (kubernetes.client.models.V1JobSpec | None) – 具有基本属性,如果它们存在于客户端规范中则会被覆盖,如果不存在于客户端规范中则会保留

  • client_spec (kubernetes.client.models.V1JobSpec | None) – 客户端想要创建的规范。

返回

合并后的规范

返回类型

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)[source]

基类:airflow.models.BaseOperator

删除 Kubernetes 作业。

另请参阅

有关如何使用此操作符的更多信息,请查看指南: KubernetesDeleteJobOperator

参数
  • name (str) – 作业的名称。

  • namespace (str) – 在 Kubernetes 中运行的命名空间。

  • kubernetes_conn_id (str | None) – Kubernetes 集群的 Kubernetes 连接 ID

  • config_file (str | None) – Kubernetes 配置文件路径。(已模板化)如果未指定,则默认值为 ~/.kube/config

  • in_cluster (bool | None) – 使用 in_cluster 配置运行 kubernetes 客户端。

  • cluster_context (str | None) – 指向 kubernetes 集群的上下文。当 in_cluster 为 True 时忽略。如果为 None,则使用当前上下文。(已模板化)

  • delete_on_status (str | None) – 根据作业状态执行删除操作的条件。值:None - 无论作业状态如何都删除作业,“Complete” - 仅删除成功完成的作业,“Failed” - 仅删除失败的作业。(默认值:None

  • wait_for_completion (bool) – 是否等待作业完成。(默认值:False

  • poll_interval (float) – 轮询作业状态之间的间隔(以秒为单位)。当设置 delete_on_status 参数时使用。(默认值:10.0)

template_fields: collections.abc.Sequence[str] = ('config_file', 'name', 'namespace', 'cluster_context')[source]
hook()[source]
client()[source]
execute(context)[source]

在创建操作符时派生。

上下文与渲染 jinja 模板时使用的字典相同。

有关更多上下文,请参阅 get_template_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 作业。

另请参阅

有关如何使用此操作符的更多信息,请查看指南:KubernetesPatchJobOperator

参数
  • name (str) – 作业的名称

  • namespace (str) – 在 Kubernetes 中运行的命名空间

  • body (object) – 具有更新参数的作业 json 对象 https://kubernetes.ac.cn/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/config

  • in_cluster (bool | None) – 使用 in_cluster 配置运行 kubernetes 客户端。

  • cluster_context (str | None) – 指向 kubernetes 集群的上下文。当 in_cluster 为 True 时忽略。如果为 None,则使用当前上下文。(已模板化)

template_fields: collections.abc.Sequence[str] = ('config_file', 'name', 'namespace', 'body', 'cluster_context')[source]
hook()[source]
execute(context)[source]

在创建操作符时派生。

上下文与渲染 jinja 模板时使用的字典相同。

有关更多上下文,请参阅 get_template_context。

此条目是否有帮助?