airflow.providers.cncf.kubernetes.utils.pod_manager
¶
启动 POD。
模块内容¶
类¶
可能的 Pod 阶段。 |
|
协议,用于定义 KubernetesPodOperator 依赖的方法。 |
|
从 fetch_container_logs 退出时返回 Pod 的状态和上次日志时间。 |
|
创建、监控以及以其他方式与 Kubernetes Pod 交互,以便与 KubernetesPodOperator 一起使用。 |
|
Pod 完成时采取的动作。 |
函数¶
|
检查异常是否指示瞬态错误并值得重试。 |
|
检索容器状态。 |
|
检查 V1Pod |
|
检查 V1Pod |
|
检查 V1Pod |
|
检查 V1Pod |
|
检查 V1Pod |
|
|
|
检查该行是否为日志组标记,例如 ::group:: 或 ::endgroup::。 |
- exception airflow.providers.cncf.kubernetes.utils.pod_manager.PodLaunchFailedException[source]¶
基类:
airflow.exceptions.AirflowException
当 pod 在 KubernetesPodOperator 中启动失败时。
- airflow.providers.cncf.kubernetes.utils.pod_manager.should_retry_start_pod(exception)[source]¶
检查异常是否指示瞬态错误并值得重试。
- class airflow.providers.cncf.kubernetes.utils.pod_manager.PodPhase[source]¶
可能的 Pod 阶段。
请参阅 https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase。
- class airflow.providers.cncf.kubernetes.utils.pod_manager.PodOperatorHookProtocol[source]¶
基类:
Protocol
协议,用于定义 KubernetesPodOperator 依赖的方法。
KubernetesPodOperator 的子类(例如 GKEStartPodOperator)可能会使用不扩展 KubernetesHook 的 hook。 我们使用此协议来记录 KPO 使用的方法,并确保这些方法存在于其他此类 hook 中。
- airflow.providers.cncf.kubernetes.utils.pod_manager.get_container_status(pod, container_name)[source]¶
检索容器状态。
- airflow.providers.cncf.kubernetes.utils.pod_manager.container_is_running(pod, container_name)[source]¶
检查 V1Pod
pod
以确定container_name
是否正在运行。如果该容器存在且正在运行,则返回 True。否则返回 False。
- airflow.providers.cncf.kubernetes.utils.pod_manager.container_is_completed(pod, container_name)[source]¶
检查 V1Pod
pod
以确定container_name
是否已完成。如果该容器存在且已完成,则返回 True。否则返回 False。
- airflow.providers.cncf.kubernetes.utils.pod_manager.container_is_succeeded(pod, container_name)[source]¶
检查 V1Pod
pod
以确定container_name
是否已完成并成功。如果该容器存在、已完成且成功,则返回 True。否则返回 False。
- airflow.providers.cncf.kubernetes.utils.pod_manager.container_is_wait(pod, container_name)[source]¶
检查 V1Pod
pod
以确定container_name
是否正在等待。如果该容器存在且正在等待,则返回 True。否则返回 False。
- airflow.providers.cncf.kubernetes.utils.pod_manager.container_is_terminated(pod, container_name)[source]¶
检查 V1Pod
pod
以确定container_name
是否已终止。如果该容器存在且已终止,则返回 True。否则返回 False。
- airflow.providers.cncf.kubernetes.utils.pod_manager.get_container_termination_message(pod, container_name)[source]¶
- airflow.providers.cncf.kubernetes.utils.pod_manager.check_exception_is_kubernetes_api_unauthorized(exc)[source]¶
- exception airflow.providers.cncf.kubernetes.utils.pod_manager.PodLaunchTimeoutException[source]¶
基类:
airflow.exceptions.AirflowException
当 Pod 在指定的超时时间内未离开
Pending
阶段时。
- exception airflow.providers.cncf.kubernetes.utils.pod_manager.PodNotFoundException[source]¶
基类:
airflow.exceptions.AirflowException
预期的 Pod 在 kube-api 中不存在。
- class airflow.providers.cncf.kubernetes.utils.pod_manager.PodLoggingStatus[source]¶
从 fetch_container_logs 退出时返回 Pod 的状态和上次日志时间。
- class airflow.providers.cncf.kubernetes.utils.pod_manager.PodManager(kube_client, callbacks=None)[source]¶
基类:
airflow.utils.log.logging_mixin.LoggingMixin
创建、监控以及以其他方式与 Kubernetes Pod 交互,以便与 KubernetesPodOperator 一起使用。
- await_pod_start(pod, startup_timeout=120, startup_check_interval=1)[source]¶
等待 Pod 达到
Pending
以外的阶段。
- await_container_completion(pod, container_name)[source]¶
等待给定 Pod 中的给定容器完成。
- 参数
pod (kubernetes.client.models.v1_pod.V1Pod) – 将被监控的 Pod 规范
container_name (str) – Pod 中要监控的容器的名称
- await_pod_completion(pod, istio_enabled=False, container_name='base')[source]¶
监控 Pod 并返回最终状态。
- 参数
istio_enabled (bool) – 命名空间中是否启用了 istio
pod (kubernetes.client.models.v1_pod.V1Pod) – 将被监控的 Pod 规范
container_name (str) – pod 内容器的名称
- 返回
tuple[State, str | None]
- 返回类型
kubernetes.client.models.v1_pod.V1Pod
- parse_log_line(line)[source]¶
解析 K8s 日志行并返回最终状态。
- 参数
line (str) – k8s 日志行
- 返回
时间戳和日志消息
- 返回类型
tuple[pendulum.DateTime | None, str]
- read_pod_logs(pod, container_name, tail_lines=None, timestamps=False, since_seconds=None, follow=True, post_termination_timeout=120, **kwargs)[source]¶
从 POD 读取日志。