3

这个问题背后的目的是知道如何在 Pod 中有一个文件,如果我们使用 ConfigMap,如果 configMap 会改变,我不想应用更改

谢谢

4

2 回答 2

4

我不是很明白,你为什么不想使用音量?将 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 作为文件安装并打印其内容。

于 2019-08-15T13:05:40.533 回答
1

我认为您希望在 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']

注意:- 这是一个刚刚测试的方法代码

于 2019-08-15T14:22:00.433 回答