簡體   English   中英

如何在不使用卷的情況下將 ConfigMap 作為文件掛載

[英]How to mount a ConfigMap as a file without using volume

這個問題背后的目的是要知道如何在 Pod 中有一個文件,如果我們使用 ConfigMap,如果 configMap 會改變,我不想應用更改

謝謝

我不太明白,你為什么不想使用卷? 將 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 作為文件安裝並打印其內容。

我認為您想要一個 pod 內的文件,但如果配置映射已更新,您不想更新該文件。 所以你不能使用 configmap 因為它會在 pod 重啟時更新文件。

所以我能想到的唯一選擇是在創建 pod 后推送文件,例如“kubectl cp”命令將文件復制到 pod。

kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar

問題將是當 pod 重新啟動時文件消失了,因此您必須以某種方式使其自動化,

下面是使用 init 容器。

您可以將文件放在某個 XYZ 位置並通過 init 容器下載它。

  initContainers:
  - name: download-conf
    image: busybox:1.28
    command: ['sh', '-c', 'curl http://exampel.com/conf.file -o statfull.conf']

注意:- 這是一種未經測試的公正方法代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM