这个问题的目的是要知道如何在Pod中包含文件,如果我们使用ConfigMap,如果configMap会更改,我不想应用更改
谢谢
答案 0 :(得分:1)
我不太了解,您为什么不想要使用音量?
将confgimap挂载到pod的正确方法如下所示:
Configmap-在data
节中指定文件名:
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: 2016-02-18T18:52:05Z
name: txt-file-configmap
namespace: default
resourceVersion: "516"
selfLink: /api/v1/namespaces/default/configmaps/game-config
uid: b4952dc3-d670-11e5-8cd0-68f728db1985
data:
file.txt: |
here
are
filecontents
然后在pod中,使用configmap名称和volumeMount指定一个卷,并指向一个路径,将其安装在该卷上:
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "cat /etc/txtfiles/file.txt" ]
volumeMounts:
- name: txt-file
mountPath: /etc/txtfiles
volumes:
- name: txt-file
configMap:
name: txt-file-configmap
我为您提供的示例pod将把configmap挂载为文件并打印其内容。
答案 1 :(得分:0)
我认为您想在Pod中放置一个文件,但是如果配置映射已更新,则您不想更新该文件。因此,您不能使用configmap,因为如果pod重启,它将映射文件。
因此,我可以想到的唯一选择就是在创建Pod之后推送文件,例如“ kubectl cp”命令,以将文件复制到Pod。
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
问题将是pod重新启动文件后消失了,因此您必须以某种方式使其自动化,
以下使用的是初始化容器。
您可以将文件放在XYZ位置,然后通过init容器下载。
initContainers:
- name: download-conf
image: busybox:1.28
command: ['sh', '-c', 'curl http://exampel.com/conf.file -o statfull.conf']
注意:-这是未经测试的公正方法