gpt4 book ai didi

kubernetes - 如何在不创建 ConfigMap 的情况下将动态生成的文件挂载到 pod 中?

转载 作者:行者123 更新时间:2023-12-02 12:13:48 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个控制平面组件,它在我的 k8s 集群上生成作业。我希望能够将动态生成的(但只读的)配置文件传递给每个作业。每个作业的配置文件都不同。

一种方法是为每个新 Job 创建一个包含所需配置文件内容的 ConfigMap,然后在启动 Job 时在 Job 规范中将 ConfigMap 设置为 VolumeMount。但是现在我在集群中有两个实体在语义上绑定(bind)在一起但不共享生命周期,即如果 Job 结束,ConfigMap 不会自动消失。

有没有办法直接将字符串“挂载”到 Job 的 Pod 中,而无需单独创建像 ConfigMap 这样的支持实体来存储它?我想我可以将它作为环境变量传递,但由于长度限制,这似乎很脆弱。

最佳答案

传统方法是通过 initContaineremptyDir volumeMount这允许两个容器通过私有(private)共享磁盘“通信”:

spec:
initContainers:
- name: config-gen
image: docker.io/library/busybox:latest
command:
- /bin/sh
- -ec
# now you can use whatever magick you wish to generate the config
- |
echo "my-config: is-generated" > /generated/sample.yaml
echo "some-env: ${SOME_CONFIG}" >> /generated/sample.yaml
env:
- name: SOME_CONFIG
value: subject to injection like any other kubernetes env var
volumeMounts:
- name: shared-space
mountPath: /generated
containers:
- name: main
image: docker.example.com:1234
# now you can do whatever you want with the config file
command:
- /bin/cat
- /config/sample.yaml
volumeMounts:
- name: shared-space
mountPath: /config
volumes:
- name: shared-space
emptyDir: {}

关于kubernetes - 如何在不创建 ConfigMap 的情况下将动态生成的文件挂载到 pod 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59620121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com