簡體   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