通过 Airflow 创建的 Kubernetes pod 保持运行状态

标签 kubernetes google-cloud-platform airflow

我已经在 Kubernetes 集群中设置了 Airflow。为了运行任务,我使用了 KubernetesPodOperator .

当我运行任务并查看 kubectl get pods 时,我看到一个 pod 被正确创建并且它也完成了。然而,当我查看 Airflow 时,我看到状态没有更新,它说它仍然处于运行状态。

[2019-01-27 12:43:56,580] {models.py:1595} INFO - Executing <Task(KubernetesPodOperator): xxx> on 2019-01-20T00:00:00+00:00
[2019-01-27 12:43:56,581] {base_task_runner.py:118} INFO - Running: ['bash', '-c', 'airflow run xxx xxx 2019-01-20T00:00:00+00:00 --job_id 15 --raw -sd DAGS_FOLDER/xxx.py --cfg_path /tmp/tmpxx39wldz']
[2019-01-27 12:45:21,603] {models.py:1355} INFO - Dependencies not met for <TaskInstance: xxx.xxx 2019-01-20T00:00:00+00:00 [running]>, dependency 'Task Instance Not Already Running' FAILED: Task is already running, it started on 2019-01-27 12:43:56.565328+00:00.
[2019-01-27 12:45:21,639] {models.py:1355} INFO - Dependencies not met for <TaskInstance: xxx.xxx 2019-01-20T00:00:00+00:00 [running]>, dependency 'Task Instance State' FAILED: Task is in the 'running' state which is not a valid state for execution. The task must be cleared in order to be run.
[2019-01-27 12:45:21,641] {logging_mixin.py:95} INFO - [2019-01-27 12:45:21,641] {jobs.py:2614} INFO - Task is not able to be run

有什么具体的我应该做才能将 pod 的状态返回到 Airflow 吗? KubernetesPodOperator定义如下:

do_something = KubernetesPodOperator(
    task_id='xxx',
    image='gcr.io/project/image',
    namespace='default',
    name='xxx',
    arguments=['dummy'],
    xcom_push=True,
    in_cluster=True,
    image_pull_policy='Always',
    trigger_rule='dummy',
    dag=dag,
)

编辑:看起来基本容器已经完成,但是 airflow-xcom-sidecar仍在运行。我应该做些什么来阻止那个?

最佳答案

不看你的设置就很难说清楚,但看起来 pod 已经完成并且它正在尝试 xcom推到您的主 Airflow ,它无法连接。我会检查 airflow-xcom-sidecar 的日志.就像是:

$ kubectl logs <airflow-job-pod> -c airflow-xcom-sidecar

您也可以尝试运行您的 KubernetesOperatorxcom_push=False :
do_something = KubernetesPodOperator(
    task_id='xxx',
    image='gcr.io/project/image',
    namespace='default',
    name='xxx',
    arguments=['dummy'],
    xcom_push=False,
    in_cluster=True,
    image_pull_policy='Always',
    trigger_rule='dummy',
    dag=dag,
)

关于通过 Airflow 创建的 Kubernetes pod 保持运行状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54388441/

相关文章:

mongodb - 无法附加 GCE PD,等待挂载路径超时

python - 如何模拟 googleapiclient.discovery.build

airflow - Apache Airflow 中的开始日期和预定日期问题

kubernetes - 如何使用 kustomize 将内存存储替换为持久存储

kubernetes - Kubernetes GC如何检测磁盘使用情况?

google-bigquery - 当数据实际包含多个空格时,BigQuery GUI 仅显示 1 个空格

docker - 以编程方式创建 Airflow 池

google-cloud-platform - MWAA 中的 apache-airflow-providers-google

nginx - Kubernetes-在一个Ingress中进行多种配置

.net - Dataproc 不会解压缩作为存档传递的文件