我想让我的Cloud Composer环境(Google Cloud的托管Apache Airflow服务)在不同 kubernetes集群上启动pod。我该怎么办?
请注意,Cloud composer在kubernetes集群上运行气流。该集群被认为是作曲家的“环境”。使用KubernetesPodOperator
的默认值,作曲家将在自己的集群上调度Pod。但是在这种情况下,我有一个其他的kubernetes集群,我想在该集群上运行Pod。
我可以连接到工作吊舱并在其中运行gcloud container clusters get-credentials CLUSTERNAME
,但有时不时回收吊舱,所以这不是一个持久的解决方案。
我注意到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
,我仍然可以看到列出的集群配置。
所以我不知道的是:
答案 0 :(得分:2)
为此检查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')