airflow.providers.cncf.kubernetes.operators.pod¶
在 Kubernetes POD 中执行任务。
属性¶
异常¶
当我们期望能够找到一个 Pod 但找不到时。 |
|
当 Pod 刷新凭据失败时。 |
类¶
Kubernetes Pod 发出的事件类型。 |
|
在 Kubernetes Pod 中执行任务。 |
模块内容¶
- airflow.providers.cncf.kubernetes.operators.pod.alphanum_lower = 'abcdefghijklmnopqrstuvwxyz0123456789'[源码]¶
- class airflow.providers.cncf.kubernetes.operators.pod.PodEventType[源码]¶
继承自:
enum.Enum
Kubernetes Pod 发出的事件类型。
- exception airflow.providers.cncf.kubernetes.operators.pod.PodReattachFailure[源码]¶
继承自:
airflow.exceptions.AirflowException
当我们期望能够找到一个 Pod 但找不到时。
- exception airflow.providers.cncf.kubernetes.operators.pod.PodCredentialsExpiredFailure[源码]¶
继承自:
airflow.exceptions.AirflowException
当 Pod 刷新凭据失败时。
- class airflow.providers.cncf.kubernetes.operators.pod.KubernetesPodOperator(*, kubernetes_conn_id=KubernetesHook.default_conn_name, namespace=None, image=None, name=None, random_name_suffix=True, cmds=None, arguments=None, ports=None, volume_mounts=None, volumes=None, env_vars=None, env_from=None, secrets=None, in_cluster=None, cluster_context=None, labels=None, reattach_on_restart=True, startup_timeout_seconds=120, startup_check_interval_seconds=5, get_logs=True, base_container_name=None, base_container_status_polling_interval=1, init_container_logs=None, container_logs=None, image_pull_policy=None, annotations=None, container_resources=None, affinity=None, config_file=None, node_selector=None, image_pull_secrets=None, service_account_name=None, hostnetwork=False, host_aliases=None, tolerations=None, security_context=None, container_security_context=None, dnspolicy=None, dns_config=None, hostname=None, subdomain=None, schedulername=None, full_pod_spec=None, init_containers=None, log_events_on_failure=False, do_xcom_push=False, pod_template_file=None, pod_template_dict=None, priority_class_name=None, pod_runtime_info_envs=None, termination_grace_period=None, configmaps=None, skip_on_exit_code=None, deferrable=conf.getboolean('operators', 'default_deferrable', fallback=False), poll_interval=2, log_pod_spec_on_failure=True, on_finish_action='delete_pod', is_delete_operator_pod=None, termination_message_policy='File', active_deadline_seconds=None, callbacks=None, progress_callback=None, logging_interval=None, **kwargs)[源码]¶
继承自:
airflow.models.BaseOperator
在 Kubernetes Pod 中执行任务。
另请参阅
有关如何使用此 Operator 的更多信息,请参阅指南: KubernetesPodOperator
注意
如果您使用 Google Kubernetes Engine 且 Airflow 未在同一集群中运行,请考虑使用
GKEStartPodOperator
,它简化了授权过程。- 参数:
kubernetes_conn_id (str | None) – 用于 Kubernetes 集群的 kubernetes 连接 ID。(模板化)
namespace (str | None) – 在 kubernetes 内运行的命名空间。
image (str | None) – 您希望启动的容器镜像。默认为 hub.docker.com,但完全限定的 URL 将指向自定义仓库。(模板化)
name (str | None) – 任务运行所在的 Pod 的名称,将用于(如果 random_name_suffix 为 True,则加上随机后缀)生成 Pod ID(DNS-1123 子域名,仅包含 [a-z0-9.-])。(模板化)
random_name_suffix (bool) – 如果为 True,将生成随机后缀。
arguments (list[str] | None) – 入口点的参数。如果未提供,则使用容器镜像的 CMD。(模板化)
ports (list[kubernetes.client.models.V1ContainerPort] | None) – 启动的 Pod 的端口。
volume_mounts (list[kubernetes.client.models.V1VolumeMount] | None) – 启动的 Pod 的卷挂载。(模板化)
volumes (list[kubernetes.client.models.V1Volume] | None) – 启动的 Pod 的卷。包括 ConfigMaps 和 PersistentVolumes。(模板化)
env_vars (list[kubernetes.client.models.V1EnvVar] | dict[str, str] | None) – 在容器中初始化的环境变量。(模板化)
env_from (list[kubernetes.client.models.V1EnvFromSource] | None) – (可选) 用于填充容器中环境变量的来源列表。(模板化)
secrets (list[airflow.providers.cncf.kubernetes.secret.Secret] | None) – 要注入到容器中的 Kubernetes Secret。它们可以作为环境变量或卷中的文件暴露。
in_cluster (bool | None) – 使用 in_cluster 配置运行 Kubernetes 客户端。
cluster_context (str | None) – 指向 Kubernetes 集群的上下文。当 in_cluster 为 True 时忽略。如果为 None,则使用当前上下文。(模板化)
reattach_on_restart (bool) – 如果 Pod 运行时 worker 死亡,则在下次尝试时重新连接并监控。如果为 False,则每次尝试都创建一个新的 Pod。
labels (dict | None) – 应用于 Pod 的标签。(模板化)
startup_timeout_seconds (int) – Pod 启动的超时时间(秒)。
startup_check_interval_seconds (int) – 检查 Pod 是否已启动的间隔(秒)
get_logs (bool) – 将基础容器的 stdout 作为任务日志获取。
init_container_logs (collections.abc.Iterable[str] | str | Literal[True] | None) – init 容器列表,其日志将发布到 stdout。接受容器序列、单个容器名称或 True。如果为 True,则所有容器的日志都会发布。
container_logs (collections.abc.Iterable[str] | str | Literal[True] | None) – 容器列表,其日志将发布到 stdout。接受容器序列、单个容器名称或 True。如果为 True,则所有容器的日志都会发布。与 get_logs 参数配合使用。默认值为基础容器。
image_pull_policy (str | None) – 指定缓存或始终拉取镜像的策略。
annotations (dict | None) – 可以附加到 Pod 的非识别元数据。可以包含大量数据,并且可以包含标签不允许的字符。(模板化)
container_resources (kubernetes.client.models.V1ResourceRequirements | None) – 启动的 Pod 的资源。(模板化)
affinity (kubernetes.client.models.V1Affinity | None) – 启动的 Pod 的亲和性调度规则。
config_file (str | None) – Kubernetes 配置文件的路径。(模板化) 如果未指定,默认值为
~/.kube/config
node_selector (dict | None) – 包含一组调度规则的字典。(模板化)
image_pull_secrets (list[kubernetes.client.models.V1LocalObjectReference] | None) – 需要提供给 Pod 的所有镜像拉取 Secret。如果需要多个 Secret,请提供一个逗号分隔列表:secret_a,secret_b
service_account_name (str | None) – 服务账号的名称
hostnetwork (bool) – 如果为 True,则在 Pod 上启用主机网络。
host_aliases (list[kubernetes.client.models.V1HostAlias] | None) – 应用于 Pod 中容器的主机别名列表。
tolerations (list[kubernetes.client.models.V1Toleration] | None) – Kubernetes tolerations(容忍度)列表。
security_context (kubernetes.client.models.V1PodSecurityContext | dict | None) – Pod 应运行的安全选项 (PodSecurityContext)。
container_security_context (kubernetes.client.models.V1SecurityContext | dict | None) – 容器应运行的安全选项。
dnspolicy (str | None) – Pod 的 dnspolicy(DNS 策略)。
dns_config (kubernetes.client.models.V1PodDNSConfig | None) – Pod 的 DNS 配置(IP 地址、搜索域、选项)。
hostname (str | None) – Pod 的主机名。(模板化)
subdomain (str | None) – Pod 的子域名。
schedulername (str | None) – 指定 Pod 的调度器名称。
full_pod_spec (kubernetes.client.models.V1Pod | None) – 完整的 PodSpec。
init_containers (list[kubernetes.client.models.V1Container] | None) – 启动的 Pod 的 init 容器。
log_events_on_failure (bool) – 如果发生故障,记录 Pod 的事件日志。
do_xcom_push (bool) – 如果为 True,容器中文件 /airflow/xcom/return.json 的内容也将在容器完成后被推送到 XCom。
pod_template_file (str | None) – Pod 模板文件的路径。(模板化)
pod_template_dict (dict | None) – Pod 模板字典。(模板化)
priority_class_name (str | None) – 启动的 Pod 的优先级类名称。
pod_runtime_info_envs (list[kubernetes.client.models.V1EnvVar] | None) – (可选) 一组环境变量,用于设置在容器中。
termination_grace_period (int | None) – 如果任务在 UI 中被终止,优雅停机期,默认为 kubernetes 默认值。
configmaps (list[str] | None) – (可选) ConfigMap 名称列表,从中收集 ConfigMap 以环境变量填充。目标 ConfigMap 的 Data 字段内容将表示为环境变量的键值对。扩展 env_from。
skip_on_exit_code (int | collections.abc.Container[int] | None) – 如果任务以此退出代码退出,则将任务保持在
skipped
状态(默认:None)。如果设置为None
,任何非零退出代码都将被视为失败。base_container_name (str | None) – Pod 中的基础容器名称。如果 get_logs 为 True,此容器的日志将作为任务日志的一部分显示。默认为 None。如果为 None,将查阅类变量 BASE_CONTAINER_NAME(默认为“base”)作为要使用的基础容器名称。(模板化)
base_container_status_polling_interval (float) – 轮询周期(秒),用于检查 Pod 基础容器状态。默认为 1 秒。
deferrable (bool) – 在可延迟模式下运行 Operator。
poll_interval (float) – 检查状态的轮询周期(秒)。仅在可延迟模式下使用。
log_pod_spec_on_failure (bool) – 如果发生故障,记录 Pod 的规范。
on_finish_action (str) – 当 Pod 达到其最终状态或执行中断时要做什么。如果为“delete_pod”,无论状态如何,Pod 都将被删除;如果为“delete_succeeded_pod”,则仅删除成功的 Pod。可以设置为“keep_pod”来保留 Pod。
termination_message_policy (str) – 基础容器的终止消息策略。默认值为“File”。
active_deadline_seconds (int | None) – active_deadline_seconds,它转换为 V1PodSpec 中的 active_deadline_seconds。
callbacks (list[type[airflow.providers.cncf.kubernetes.callbacks.KubernetesPodOperatorCallback]] | type[airflow.providers.cncf.kubernetes.callbacks.KubernetesPodOperatorCallback] | None) – 包含 KubernetesPodOperator 不同步骤的回调方法的 KubernetesPodOperatorCallback 实例。
logging_interval (int | None) – 任务在恢复获取最新日志之前可以处于延迟状态的最大时间(秒)。如果为
None
,则任务将保持延迟状态直到 Pod 完成,在此之前不会显示任何日志。
- template_fields: collections.abc.Sequence[str] = ('image', 'name', 'hostname', 'cmds', 'annotations', 'arguments', 'env_vars', 'labels',...[source]¶
- property pod_manager: airflow.providers.cncf.kubernetes.utils.pod_manager.PodManager[source]¶
- trigger_reentry(context, event)[source]¶
从触发器返回的入口点。
如果
logging_interval
为 None,则此时 Pod 应该已完成,我们将只需获取日志并退出。如果
logging_interval
不为 None,则 Pod 可能仍在运行,我们将只需获取最新日志并再次延迟回触发器。
- on_kill()[source]¶
覆盖此方法以在任务实例被终止时清理子进程。
在操作符内使用 threading、subprocess 或 multiprocessing 模块都需要进行清理,否则会留下残留进程。