如何使用configmap在Kubernetes中挂载整个目录?

时间:2018-01-08 12:19:28

标签: docker kubernetes

我希望能够在/ etc / configs

中安装未知数量的配置文件

我已使用以下命令将一些文件添加到configmap中:

  

kubectl create configmap etc-configs --from-file = / tmp / etc-config

永远不会知道文件和文件名的数量,我想重新创建配置图,并且Kubernetes容器中的文件夹应在同步间隔后更新。

我试图安装它,但我无法这样做,文件夹总是空的,但我在configmap中有数据。

bofh$ kubectl describe configmap etc-configs
Name:         etc-configs
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
file1.conf:
----
{
 ... trunkated ...
}
file2.conf:
----
{
 ... trunkated ...
}
file3.conf:
----
{
 ... trunkated ...
}

Events:  <none>

我在容器volumeMounts中使用这个:

- name: etc-configs
  mountPath: /etc/configs

这是卷:

- name: etc-configs
  configMap:
    name: etc-configs

我可以挂载单个项目,但不能挂载整个目录。

有任何建议如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

使用您的配置,您将要安装configmap中列出的每个文件。

如果您需要在文件夹中挂载所有文件,则不应使用configmap,而应使用persistenceVolume和persistenceVolumeClaims:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-volume-jenkins
spec:
  capacity:
    storage: 50Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/data/pv-jenkins"
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim-jenkins
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ""
  resources:
    requests:
      storage: 50Gi

在你的deployment.yml中:

 volumeMounts:
        - name: jenkins-persistent-storage
          mountPath: /data

  volumes:
        - name: jenkins-persistent-storage
          persistentVolumeClaim:
            claimName: pv-claim-jenkins

您还可以使用以下内容:

kubectl create configmap my-config --from-file=/etc/configs

使用该文件夹中的所有文件创建配置映射。

希望这有帮助。

答案 1 :(得分:1)

我现在感觉真的很蠢。

抱歉,我的错。

Docker容器没有启动所以我使用docker run -it -entrypoint ='/ bin / bash'手动启动它,我看不到configMap中的任何文件。

这不起作用,因为在Kubernetes启动之前,docker对我的部署一无所知。

docker镜头失败,Kubernetes配置一直都是正确的。

我调试错了。

答案 2 :(得分:0)

您可以将ConfigMap作为特殊卷安装到容器中。

在这种情况下,mount文件夹会将每个键显示为文件在mount文件夹中,并且文件将具有映射值作为内容。

来自Kubernetes documentation

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
...
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        # Provide the name of the ConfigMap containing the files you want
        # to add to the container
        name: special-config