【问题标题】:How to access at airflow by kubectl on google-cluoud-composer and airflow 1.10如何通过 google-cloud-composer 和气流 1.10 上的 kubectl 访问气流
【发布时间】:2019-11-28 06:39:36
【问题描述】:

我正在使用GCP Composer 来管理 GCP 上的 Apache。

对于一个新项目,我正在使用新版本的 Composer/Airflow(composer:1.6.1,Airflow:1.10)

要通过外壳连接气流以检查损坏的 DAG,GCP documentation 告诉:

  1. 打开 GCP 外壳

  2. 连接到 GKE 集群

  3. myuser@cloudshell:~ kubectl get pods

  4. myuser@cloudshell:~ kubectl exec -it airflow-worker-1a2b3c-xyz12 -c 气流工作者 -- /bin/bash

这在 Airflow 1.9 上运行良好,但在 Airflow 1.10 kubectl get pods 上不显示 worker pod,而且我还没有找到有关如何在 AF 1.10 上通过 kubeclt 访问气流的文档

有人可以帮助我吗?

_myuser_@cloudshell:~ (_Myproject_)$ kubectl get pods 
NAME                                                        READY     STATUS      RESTARTS   AGE
airflow-monitoring-564c8c7dc5-hxb62                         1/1       Running     0          17h
airflow-redis-0                                             1/1       Running     0          17h
airflow-sqlproxy-594dbf87b7-nmtbh                           1/1       Running     0          17h
composer-agent-1a871e5e-fa97-4fa3-8843-d0b06718f7f6-rb4rj   0/1       Completed   0          12h
composer-agent-41ee85f8-90f2-45a1-a148-883421775651-jfjz6   0/1       Completed   0          12h
composer-agent-6984c0ef-4a0b-4150-bc6e-8a2996a5c38f-sd45f   0/1       Completed   0          17h
composer-agent-97de1623-5772-496d-a0c0-54adefc00c5a-rq9w6   0/1       Completed   0          12h
composer-agent-b3bc0dc6-6e95-4c9c-91d0-735755c2210f-tcxgg   0/1       Completed   0          73m
composer-fluentd-daemon-bkn28                               1/1       Running     133        17h
composer-fluentd-daemon-jvdlc                               1/1       Running     133        17h
composer-fluentd-daemon-lchq9                               1/1       Running     133        17h
composer-fluentd-daemon-wfzzr                               1/1       Running     133        17h

【问题讨论】:

    标签: airflow kubectl worker google-cloud-composer


    【解决方案1】:

    为了适应就地版本升级,Cloud Composer 现在在以运行版本命名的非默认命名空间中运行特定于版本的 Pod(工作程序和调度程序)。例如,它可能是这样的:

    $ kubectl get ns | grep composer  # ns = namespaces
    composer-1-6-1-airflow-1-10-1-04c210ec   Active   2d
    

    然后您可以专门在该命名空间中查找集群资源:

    $ kubectl get pods --namespace=composer-1-6-1-airflow-1-10-1-04c210ec
    NAME                                 READY   STATUS      RESTARTS   AGE
    airflow-database-init-job-mhn87      0/1     Completed   0          2d
    airflow-scheduler-748ff8dc88-g2k5q   2/2     Running     0          2d
    airflow-worker-5767579d-csvcg        2/2     Running     0          2d
    airflow-worker-5767579d-d8fgd        2/2     Running     0          2d
    airflow-worker-5767579d-tlwpc        2/2     Running     0          2d
    

    如果更方便,还可以列出all命名空间中的资源:

    $ kubectl get pods --all-namespaces  # or -A
    
    $ kubectl get pods -A | grep airflow
    composer-1-6-1-airflow-1-10-1-04c210ec   airflow-database-init-job-mhn87                                  0/1     Completed   0          2d
    composer-1-6-1-airflow-1-10-1-04c210ec   airflow-scheduler-748ff8dc88-g2k5q                               2/2     Running     0          2d
    composer-1-6-1-airflow-1-10-1-04c210ec   airflow-worker-5767579d-csvcg                                    2/2     Running     0          2d
    composer-1-6-1-airflow-1-10-1-04c210ec   airflow-worker-5767579d-d8fgd                                    2/2     Running     0          2d
    composer-1-6-1-airflow-1-10-1-04c210ec   airflow-worker-5767579d-tlwpc                                    2/2     Running     0          2d
    default                                  airflow-monitoring-f78cd5c75-2n727                               1/1     Running     0          2d
    default                                  airflow-redis-0                                                  1/1     Running     0          2d
    default                                  airflow-sqlproxy-57b7976d59-qnkm7                                1/1     Running     0          2d
    

    有关如何通过 SSH 连接到其中一个工作程序或调度程序 pod 的示例:

    # Long form
    $ kubectl exec \
       --stdin --tty \
       --namespace=composer-1-8-1-airflow-1-10-3-6e595c80 
       airflow-scheduler-58948b8956-4sxwt /bin/bash
    
    # Short form
    $ kubectl exec -it \
       -n composer-1-8-1-airflow-1-10-3-6e595c80
       airflow-scheduler-58948b8956-4sxwt bash
    

    【讨论】:

    • 截至 2020 年 12 月 4 日,K8 的版本为 1.19,为了访问 K8 容器,语法略有变化:kubectl exec --stdin --tty --namespace <target namespace> <pod's name> -- /bin/bash。现在需要/bin/bash 之前的双破折号--
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多