文章目录
挂载文件的四种方式1、configMap2、hostPath3、gitRepo4、emptyDir
挂载文件的四种方式
1、configMap 2、hostPath 3、gitRepo 4、emptyDir 5、helm中file.Get
1、configMap
将想要挂载的文件内容在tpl中进行define,然后载入到configmap.yaml文件中
使用卷使用configmap,挂载的方式得到要执行的文件内容
格式为
spec:
containers:
- name:
image:
volumeMounts:
- name: nova
-conf
mountPath: /etc/nova/nova.conf
subPath: nova.conf
volumes:
- name: nova
-conf
configMap:
name: {{ tuple . "nova"
|include "nova
-name"
}}-configmap
注意
1、mountPath会覆盖掉挂载路径下的所有文件,即删除所有文件,只保留挂载的文件 2、subpath只使用在configMap情况下,添加subpath时,表示不会覆盖掉原本的路径下的文件,subpath的值必须是configMap中data下的key值。
2、hostPath
将node节点(主机)的本地文件挂载到容器中,比如实现本地时间的同步功能
spec:
containers:
- name: httpd
-deployment
imagePullPolicy: IfNotPresent
image: nginx
:1.1.1
volumeMounts:
- name: nova
-conf
mountPath: /etc/nova/nova.conf
subPath: nova.conf
volumes:
- name: host
-root
hostPath:
path: /
type: Directory
注意:
1、hostPath不用subPath这一项,直接就是选择挂载的路径;不会覆盖原有文件夹下的文件 2、不提供pod的亲和性,即host path映射的目录在node1,而pod可能被调度到node2,导致原来的在node1的数据不存在,pod一直无法启动起来; 3、能够提供pv/pvc/storage class的方式使用; 4、数据能持久化。
3、gitRepo
可以挂载git性质的文件或者目录
apiVersion: v1
kind: Pod
metadata:
name: gitrepo
-volume
-pod
spec:
containers:
- image: nginx
:alpine
name: web
-server
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
readOnly: true
ports:
- containerPort: 80
protocol: TCP
volumes:
- name: html
gitRepo:
repository: https
://github.com/luksa/kubia
-website
-example.git
revision: master
directory: .
4、emptyDir
apiVersion: v1
kind: Pod
metadata:
name: test
-pod
spec:
containers:
- image: busybox
name: test
-emptydir
command: [ "sleep", "3600" ]
volumeMounts:
- mountPath: /data
name: data
-volume
volumes:
- name: data
-volume
emptyDir: {}
注意:
1.需要使用内存作为emptyDir的可用存储资源也是可以的,只需要在创建emptyDir卷时增加一个emptyDir.medium字段的定义,并赋值为"Memory"即可; 2.在使用tmpfs文件系统作为emptyDir的存储后端时,如果遇到node节点重启,则emptyDir中的数据也会全部丢失。同时,你编写的任何文件也都将计入Container的内存使用限制,即empty dir方式保存的数据不能持久化。