【问题标题】:How to Spin up a cloud proxy in cloud composer cluster如何在云作曲家集群中启动云代理
【发布时间】:2019-04-03 12:31:41
【问题描述】:

如何为云作曲家集群启动云代理

目前我们使用气流来管理作业和动态 DAG 创建。为此,编写了一个单独的 Dag 来检查 PostgreSQL 中的数据库表中的现有规则,如果规则在 PostgreSQL 中处于活动/非活动状态,我们手动设置为关闭/打开 Airflow 中的动态 DAG。现在,我们将使用 Google 的 self托管的 Cloud Composer,但问题是我们无权访问 Cloud Composer 的数据库。我们如何使用cloud sql proxy来解决这个问题?

【问题讨论】:

    标签: kubernetes google-cloud-platform google-cloud-composer cloud-sql-proxy


    【解决方案1】:

    实际上已经可以访问 Cloud Composer 数据库,因为在环境附加的 GKE 集群中运行了一个 Cloud SQL 代理。您可以使用其服务名称airflow-sqlproxy-service 从集群内连接到它,使用root。例如,在 Composer 1.6.0 上,如果您拥有 Kubernetes 集群凭据,则可以列出正在运行的 pod:

    $ kubectl get po --all-namespaces
    composer-1-6-0-airflow-1-9-0-6f89fdb7   airflow-database-init-job-kprd5                                  0/1     Completed   0          1d
    composer-1-6-0-airflow-1-9-0-6f89fdb7   airflow-scheduler-78d889459b-254fm                               2/2     Running     18         1d
    composer-1-6-0-airflow-1-9-0-6f89fdb7   airflow-worker-569bc59df5-x6jhl                                  2/2     Running     5          1d
    composer-1-6-0-airflow-1-9-0-6f89fdb7   airflow-worker-569bc59df5-xxqk7                                  2/2     Running     5          1d
    composer-1-6-0-airflow-1-9-0-6f89fdb7   airflow-worker-569bc59df5-z5lnj                                  2/2     Running     5          1d
    default                                 airflow-redis-0                                                  1/1     Running     0          1d
    default                                 airflow-sqlproxy-668fdf6c4-vxbbt                                 1/1     Running     0          1d
    default                                 composer-agent-6f89fdb7-0a7a-41b6-8d98-2dbe9f20d7ed-j9d4p        0/1     Completed   0          1d
    default                                 composer-fluentd-daemon-g9mgg                                    1/1     Running     326        1d
    default                                 composer-fluentd-daemon-qgln5                                    1/1     Running     325        1d
    default                                 composer-fluentd-daemon-wq5z5                                    1/1     Running     326        1d
    

    您可以看到其中一个工作 pod 名为 airflow-worker-569bc59df5-x6jhl,并在命名空间 composer-1-6-0-airflow-1-9-0-6f89fdb7 中运行。如果我通过 SSH 连接其中一个并运行 MySQL CLI,我就可以访问数据库:

    $ kubectl exec \
        -it airflow-worker-569bc59df5-x6jhl \
        --namespace=composer-1-6-0-airflow-1-9-0-6f89fdb7 -- \
          mysql \
            -u root \
            -h airflow-sqlproxy-service.default
    
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 27147
    Server version: 5.7.14-google-log (Google)
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>
    

    TL;DR 对于 DAG 中运行的任何内容,请使用 root@airflow-sqlproxy-service.default 连接,无需密码。这将通过已在您的 Composer 环境中运行的 Cloud SQL 代理连接到 Airflow 元数据数据库。


    如果您需要连接到一个不是在 Cloud SQL 中运行的 Airflow 数据库的数据库,那么您可以通过在 GKE 中部署一个新的代理 pod 来启动另一个代理(就像您将部署Kubernetes 集群中的任何其他内容)。

    【讨论】:

    • 谢谢,这很有帮助。有没有办法找到“myproject:myregion:myinstance”从外部连接到它? (通过另一个代理)
    • 我希望 GCP 也能提供简单的选项来轻松连接到其他 SQL 实例
    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 2022-07-22
    相关资源
    最近更新 更多