首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于kubernet configmap mountPath和subPath

关于kubernet configmap mountPath和subPath
EN

Stack Overflow用户
提问于 2022-05-21 02:37:45
回答 2查看 60关注 0票数 0

豆荚yaml

代码语言:javascript
复制
      containers:
        - name: kiada
          image: :kiada-0.1
          volumeMounts:
            - name: my-test
              subPath: my-app.conf
              mountPath: /html/my-app.conf
           
      volumes:
        - name: my-test
          configMap:
            name: kiada-config

配置映射

代码语言:javascript
复制
➜  v5-kubernetes git:(master) ✗ k get cm kiada-config -oyaml
apiVersion: v1
data:
  key: value\n
  status-message: This status message is set in the kiada-config config map2\n
kind: ConfigMap
metadata:
  creationTimestamp: "2022-05-18T03:01:15Z"
  name: kiada-config
  namespace: default
  resourceVersion: "135185128"
  uid: 8c8875ce-47f5-49d4-8bc7-d8dbc2d7f7ba

舱里有我的-app.conf

代码语言:javascript
复制
root@kiada2-7cc7bf55d8-m97tt:/# ls -al /html/my-app.conf/
total 12
drwxrwxrwx 3 root root 4096 May 21 02:29 .
drwxr-xr-x 1 root root 4096 May 21 02:29 ..
drwxr-xr-x 2 root root 4096 May 21 02:29 ..2022_05_21_02_29_41.554311630
lrwxrwxrwx 1 root root   31 May 21 02:29 ..data -> ..2022_05_21_02_29_41.554311630
lrwxrwxrwx 1 root root   10 May 21 02:29 key -> ..data/key
lrwxrwxrwx 1 root root   21 May 21 02:29 status-message -> ..data/status-message
root@kiada2-7cc7bf55d8-m97tt:/# ls -al /html/my-app.conf/

如果我在pod yaml中添加subPath

代码语言:javascript
复制
spec:
      containers:
        - name: kiada
          image: kiada-0.1
          volumeMounts:
            - name: my-test
              subPath: my-app.conf
              mountPath: /html/my-app.conf
           
      volumes:
        - name: my-test
          configMap:
            name: kiada-config

回音

代码语言:javascript
复制
root@kiada2-c89749c8-x9qwq:/# ls -al html/my-app.conf/
total 8
drwxrwxrwx 2 root root 4096 May 21 02:36 .
drwxr-xr-x 1 root root 4096 May 21 02:36 ..

为什么我使用subPath,配置映射键不存在,有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-21 07:22:07

为了生成一个名为my-app.config的文件,其中包含Pod文件系统中的应用程序配置,必须确保配置映射中存在此文件

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: kiada-config
data:
  my-app.conf: |
    key: value
    status-message: This status message is set in the kiada-config config map2

然后,你可以像这样把它装到你的眼袋里:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: kiada
  name: kiada
spec:
  containers:
    - name: kiada
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "tail -f /dev/null" ]
      volumeMounts:
        - mountPath: /html/
          name: my-test
  volumes:
    - name: my-test
      configMap:
        name: kiada-config

在此场景中,不需要subPath字段。如果您想要将重新映射到不同的名称,那么或my-app.conf都是有用的。

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: kiada
  name: kiada
spec:
  containers:
    - name: kiada
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "tail -f /dev/null" ]
      volumeMounts:
        - mountPath: /html/my-app-new-name.conf
          name: my-test
          subPath: my-app.conf
  volumes:
    - name: my-test
      configMap:
        name: kiada-config

.或,如果您的ConfigMap中有多个配置文件,并且只想将其中一个映射到Pod中:

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: kiada-config
data:
  my-app.conf: |
    key: value
    status-message: This status message is set in the kiada-config config map2
  my-second-app.conf: |
    error: not in use

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: kiada
  name: kiada
spec:
  containers:
    - name: kiada
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "tail -f /dev/null" ]
      volumeMounts:
        - mountPath: /html/my-app.conf
          name: my-test
          subPath: my-app.conf
  volumes:
    - name: my-test
      configMap:
        name: kiada-config
票数 1
EN

Stack Overflow用户

发布于 2022-05-21 05:23:30

在您的configmap中没有文件,我建议签出:https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#add-configmap-data-to-a-volume

configmap

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  SPECIAL_LEVEL: very
  SPECIAL_TYPE: charm

POD部署

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "ls /etc/config/" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: special-config
  restartPolicy: Never

当pod运行时,命令ls /etc/config/生成下面的输出:

代码语言:javascript
复制
SPECIAL_LEVEL
SPECIAL_TYPE

如果您想用不同的文件名注入configmap,可以使用items

代码语言:javascript
复制
      items:
        - key: SPECIAL_LEVEL
          path: keys

示例:https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#add-configmap-data-to-a-specific-path-in-the-volume

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72326276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档