如何让 Google Cloud Composer (airflow) 运行 在不同的 kubernetes 集群上工作?

How to let Google Cloud Composer (airflow) run jobs on a different kubernetes cluster?

我想让我的 Cloud Composer 环境(Google Cloud 的托管 Apache Airflow 服务)在 不同的 kubernetes 集群上启动 pods。我应该怎么做?

请注意,Cloud composer 运行s 气流在 kubernetes 集群上。该集群被认为是作曲家 "environment"。使用 KubernetesPodOperator 的默认值,composer 将在其自己的集群上安排 pods。但是在这种情况下,我有一个不同的 kubernetes 集群,我想在其上 运行 pods.

我可以在那里连接到工人 pods 和 运行 一个 gcloud container clusters get-credentials CLUSTERNAME,但是 pods 偶尔会被回收,所以这不是一个持久的解决方案.

我注意到 KubernetesPodOperator 有一个 in_cluster 和一个 cluster_context 参数,这似乎很有用。我希望这会起作用:

pod = kubernetes_pod_operator.KubernetesPodOperator(
    task_id='my-task',
    name='name',
    in_cluster=False,
    cluster_context='my_cluster_context',
    image='gcr.io/my/image:version'
)

但这会导致 kubernetes.config.config_exception.ConfigException: Invalid kube-config file. Expected object with name CONTEXTNAME in kube-config/contexts list

尽管如果我 运行 kubectl config get-contexts 在 worker pods 中,我可以看到列出的集群配置。

所以我想不通的是:

查看 GKEPodOperator 了解此内容。

文档中的示例用法:

operator = GKEPodOperator(task_id='pod_op',
                          project_id='my-project',
                          location='us-central1-a',
                          cluster_name='my-cluster-name',
                          name='task-name',
                          namespace='default',
                          image='perl')