如何在不使用卷的情况下将ConfigMap挂载为文件

时间:2019-08-15 12:30:04

标签: kubernetes pod configmap

这个问题的目的是要知道如何在Pod中包含文件,如果我们使用ConfigMap,如果configMap会更改,我不想应用更改

谢谢

2 个答案:

答案 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']

注意:-这是未经测试的公正方法