首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将单个文件作为卷挂载到KubernetesPodOperator?

如何将单个文件作为卷挂载到KubernetesPodOperator?
EN

Stack Overflow用户
提问于 2019-09-11 04:31:26
回答 3查看 1.7K关注 0票数 3

我有一个docker镜像,它在启动时需要一个挂载的JSON凭证文件。容器是通过如下命令启动的:

docker run -v [CREDENTIALS_FILE]:/credentials.json image_name

此图像位于Google Container Registry中,我想使用KubernetesPodOperator在Cloud Composer dag中启动它。

有没有办法通过KubernetesPodOperator挂载单个文件?理想情况下,此文件将托管在云存储位置。我读到有一个volume/volume_mount选项,但是传递一个文件似乎很麻烦--希望还有另一个我忽略了的选项。

代码语言:javascript
复制
KubernetesPodOperator(namespace='default',
                      image="gcr.io/image_name,
                      name="start-container-image",
                      task_id="start-container-image",
                      volume=[?],
                      volume_mounts=[?],
                      dag=dag)
EN

回答 3

Stack Overflow用户

发布于 2019-09-12 04:29:56

我使用Patrick W的建议并通过一个configMap解决了这个问题。我可能会更新它以使用一个秘密,但到目前为止,以下是实现:

首先,我创建了configMap:kubectl create configmap credentials-configmap --from-file=./credentials.json

接下来,在我的DAG中,我设置了音量选项。请注意,我必须将配置修改为子目录“/ mount_path /”,因为它在挂载到"/“时出错。

代码语言:javascript
复制
volume_mount = VolumeMount('creds-volume',
                            mount_path='/config/',
                            sub_path=None,
                            read_only=False)

volume_config = {
    'configMap': {
        'name': 'creds-volume'
    }
}

volume = Volume(name='creds-volume', configs=volume_config)

这将传递给KuberenetesPodOperator:

代码语言:javascript
复制
KubernetesPodOperator(
volumes=[volume],
volume_mounts=[volume_mount],
...excluding other options for brevity
)

最后,容器在启动脚本期间使用它:gcloud auth activate-service-account --key-file=/config/credentials.json

票数 2
EN

Stack Overflow用户

发布于 2019-09-11 20:15:34

k8s允许您装载卷(静态数据的configMap就可以,而且不是很繁重的工作)。否则,如果您需要从不支持PV的远程存储(如GCS)远程拉取数据,则需要直接拉取数据。

您可能希望考虑使用仅用于从远程存储下载数据并将其保存在本地的initContainer,以便您的主应用程序可以在本地使用这些数据运行。

票数 1
EN

Stack Overflow用户

发布于 2021-04-16 15:57:13

根据David的回答,要修复已挂载卷的权限问题,请使用以下命令:

代码语言:javascript
复制
volume_config = {
    "configMap": {
        "name": "foobar",
        "defaultMode": 0o744
    }
}

请注意,Python3中的默认模式写为0o744,而YAML中的默认模式为0744

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57877849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档