【发布时间】:2022-07-21 17:09:33
【问题描述】:
我有一个谷歌云作曲家环境。在我的 DAG 中,我想在 GKE 中创建一个 pod。当我基于不需要任何卷配置或机密的 docker 容器部署一个简单的应用程序时,一切正常,例如:
kubernetes_max = GKEStartPodOperator(
# The ID specified for the task.
task_id="python-simple-app",
# Name of task you want to run, used to generate Pod ID.
name="python-demo-app",
project_id=PROJECT_ID,
location=CLUSTER_REGION,
cluster_name=CLUSTER_NAME,
# Entrypoint of the container, if not specified the Docker container's
# entrypoint is used. The cmds parameter is templated.
cmds=["python", "app.py"],
namespace="production",
image="gcr.io/path/to/lab-python-job:latest",
)
但是当我有一个应用程序需要访问我的 GKE 集群卷时,我需要在我的 pod 中配置卷。问题是文档对此并不清楚。我曾经foud 的唯一例子是:
volume = k8s.V1Volume(
name='test-volume',
persistent_volume_claim=k8s.V1PersistentVolumeClaimVolumeSource(claim_name='test-volume'),
)
虽然我的清单文件中的卷(我使用它从本地部署我的应用程序)看起来像这样:
volumes:
- name: volume-prod
secret:
secretName: volume-prod
items:
- key: config
path: config.json
- key: another_config
path: another_config.conf
- key: random-ca
path: random-ca.pem
因此,当我比较两个卷在控制台中的外观时(当我手动部署成功运行的清单文件时,以及当我使用失败的 clod composer 部署 pod 时):
-
成功运行——Manifest文件:
量产
名称:volume-prod
类型:秘密
源卷标识符:volume-prod -
失败的运行 - Composer
GKEStartPodOperator:量产
名称:volume-prod
类型:emptyDir
源卷标识符:节点的默认介质
如何通过 Cloud Composer 配置我的 pod,使其能够读取集群的卷?
【问题讨论】:
标签: python kubernetes airflow google-kubernetes-engine google-cloud-composer