airflow.providers.cncf.kubernetes.pod_generator_deprecated

Pod 生成的向后兼容性。

此模块在之前的 Pod API 和输出 kubernetes.client.models.V1Pod 之间提供了一个接口。 优点是支持完整的 Kubernetes API,并且不需要编写序列化。

模块内容

PodDefaults

Pod 的静态默认值。

PodGenerator

包含 Kubernetes Airflow Worker 配置逻辑。

函数

make_safe_label_value(string)

规范化提供的标签,使其长度和字符有效。

属性

MAX_POD_ID_LEN

MAX_LABEL_LEN

airflow.providers.cncf.kubernetes.pod_generator_deprecated.MAX_POD_ID_LEN = 253[源代码]
airflow.providers.cncf.kubernetes.pod_generator_deprecated.MAX_LABEL_LEN = 63[源代码]
class airflow.providers.cncf.kubernetes.pod_generator_deprecated.PodDefaults[源代码]

Pod 的静态默认值。

XCOM_MOUNT_PATH = '/airflow/xcom'[源代码]
SIDECAR_CONTAINER_NAME = 'airflow-xcom-sidecar'[源代码]
XCOM_CMD = 'trap "exit 0" INT; while true; do sleep 30; done;'[源代码]
VOLUME_MOUNT[源代码]
VOLUME[源代码]
SIDECAR_CONTAINER[源代码]
airflow.providers.cncf.kubernetes.pod_generator_deprecated.make_safe_label_value(string)[源代码]

规范化提供的标签,使其长度和字符有效。

有效的标签值必须小于或等于 63 个字符,并且必须为空或以字母数字字符 ([a-z0-9A-Z]) 开头和结尾,并且之间包含破折号 (-)、下划线 (_)、点 (.) 和字母数字字符。

如果标签值在安全后大于 63 个字符,或者与发送到此函数的原始值有任何不同,则我们需要截断为 53 个字符,并附加一个唯一的哈希。

class airflow.providers.cncf.kubernetes.pod_generator_deprecated.PodGenerator(image=None, name=None, namespace=None, volume_mounts=None, envs=None, cmds=None, args=None, labels=None, node_selectors=None, ports=None, volumes=None, image_pull_policy=None, restart_policy=None, image_pull_secrets=None, init_containers=None, service_account_name=None, resources=None, annotations=None, affinity=None, hostnetwork=False, tolerations=None, security_context=None, configmaps=None, dnspolicy=None, schedulername=None, extract_xcom=False, priority_class_name=None)[源代码]

包含 Kubernetes Airflow Worker 配置逻辑。

表示一个 Kubernetes pod 并管理单个 pod 的执行。任何特定于容器的配置都会应用于容器列表中的第一个容器。

参数
  • image (str | None) – Docker 镜像

  • name (str | None) – metadata 部分中的名称(不是容器名称)

  • namespace (str | None) – pod 命名空间

  • volume_mounts (list[kubernetes.client.models.V1VolumeMount | dict] | None) – Kubernetes 卷挂载列表

  • envs (dict[str, str] | None) – 包含环境变量的字典

  • cmds (list[str] | None) – 在第一个容器上运行的命令

  • args (list[str] | None) – 将在 pod 上运行的参数列表

  • labels (dict[str, str] | None) – pod 元数据的标签

  • node_selectors (dict[str, str] | None) – pod 的节点选择器

  • ports (list[kubernetes.client.models.V1ContainerPort | dict] | None) – 端口列表。应用于第一个容器。

  • volumes (list[kubernetes.client.models.V1Volume | dict] | None) – 要附加到第一个容器的卷

  • image_pull_policy (str | None) – 指定缓存或始终拉取镜像的策略

  • restart_policy (str | None) – pod 的重启策略

  • image_pull_secrets (str | None) – 要提供给 pod 的任何镜像拉取密钥。如果需要多个密钥,请提供逗号分隔的列表:secret_a,secret_b

  • init_containers (list[kubernetes.client.models.V1Container] | None) – 初始化容器列表

  • service_account_name (str | None) – 在 Pod 中运行的进程的身份

  • resources (kubernetes.client.models.V1ResourceRequirements | dict | None) – 第一个容器的资源需求

  • annotations (dict[str, str] | None) – pod 的注解

  • affinity (dict | None) – 一个包含一组亲和性调度规则的字典

  • hostnetwork (bool) – 如果为 True,则在 pod 上启用主机网络

  • tolerations (list | None) – Kubernetes 容忍度列表

  • security_context (kubernetes.client.models.V1PodSecurityContext | dict | None) – 一个包含 pod 的安全上下文的字典

  • configmaps (list[str] | None) – 要从中读取环境配置的任何 configmap 引用。如果需要多个 configmap,请提供逗号分隔的列表 configmap_a,configmap_b

  • dnspolicy (str | None) – 指定 pod 的 dnspolicy

  • schedulername (str | None) – 指定 pod 的调度器名称

  • pod – 完全指定的 pod。与 path_or_string 互斥

  • extract_xcom (bool) – 是否启动一个容器用于 xcom

  • priority_class_name (str | None) – 启动的 Pod 的优先级类名称

gen_pod()[source]

生成 pod。

static add_sidecar(pod)[source]

添加 sidecar。

static from_obj(obj)[source]

从 obj 转换为 pod。

static make_unique_pod_id(dag_id)[source]

生成唯一的 Pod 名称。

Kubernetes pod 名称的长度必须小于等于 253 个字符,并且必须通过以下正则表达式进行验证 ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$

参数

dag_id – 一个仅包含字母数字字符的 dag_id

返回

str 长度合适的有效 Pod 名称

此条目是否有帮助?