繁体   English   中英

如何让 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 集群上启动 pod。 我该怎么做?

请注意,Cloud composer 在 kubernetes 集群上运行气流。 该集群被认为是作曲家的“环境”。 使用KubernetesPodOperator的默认值,composer 将在自己的集群上调度 pod。 但是,在这种情况下,我有一个不同的 kubernetes 集群,我想在其上运行 pod。

我可以连接到工作 Pod 并在gcloud container clusters get-credentials CLUSTERNAME运行gcloud container clusters get-credentials CLUSTERNAME ,但gcloud container clusters get-credentials CLUSTERNAME地回收这些 Pod,所以这不是一个持久的解决方案。

我注意到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 kubernetes.config.config_exception.ConfigException: Invalid kube-config file. Expected object with name CONTEXTNAME in kube-config/contexts list

虽然如果我在工作 Pod 中运行kubectl config get-contexts ,我可以看到列出的集群配置。

所以我无法弄清楚的是:

  • 如何确保我的其他 kubernetes 集群的上下文在我的 Composer 环境的工作 Pod 上可用(或者应该在节点上?)
  • 如果设置了上下文(就像我为测试目的手动设置的那样),我如何告诉气流使用该上下文?

为此,请查看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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM