我希望能够在/ 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
我可以挂载单个项目,但不能挂载整个目录。
有任何建议如何解决这个问题?
答案 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文件夹中,并且文件将具有映射值作为内容。
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