一,Volumes文档
二,Subpath
volumeMounts.subPath属性在引用的卷中指定一个子路径,而不是其根。
示例如下:
apiVersion: v1
kind: Pod
metadata:
name: my-lamp-site
spec:
containers:
- name: mysql
image: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: "rootpasswd"
volumeMounts:
- mountPath: /var/lib/mysql
name: site-data
subPath: mysql
- name: php
image: php:7.0-apache
volumeMounts:
- mountPath: /var/www/html
name: site-data
subPath: html
volumes:
- name: site-data
persistentVolumeClaim:
claimName: my-lamp-site-data
volumeMounts配置容器挂载信息
mountPath配置容器文件名或者目录名
name配置声明卷,也就是volumes配置的相同name的存储介质。注意,如果volumes未配置同name的存储介质,那么,volumeMounts是无法使用的,必须声明才能使用。
subpath配置的是挂载存储介质子路径文件名或者目录名。subpath挂载文件不覆盖目录。举例a目录包含c,d,声明a为挂载目录。subpath配置的是c和d,也就是子路径中的文件或者目录名,是相对路径。
三,HostPath
HostPath是将宿主机上的目录挂载到容器中使用。
示例如下
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /data
# this field is optional
type: Directory
语法如示例:
path配置宿主机目录
type参数:
DirectoryOrCreate:意思是我们要挂载的路径在宿主机上是个已经存在的目录,不存在就创建一个新的目录。
Directory:宿主机上必须实现存在目录,如果不存在就报错
FileOrCreate:表示挂载的是文件,如果不存在就挂载一个文件。文件也可以当做存储挂载的。
File:表示要挂载的文件必须事先存在,否则就报错。
Socket:表示必须是一个Socket类型的文件。
CharDevice:表示是一个字符类型的设备文件。
BlockDevice:表示的是一个块类型的设备文件。
三,未完待续。
只记录个人使用过的,其他建议查看官方文档