kubernetes in action读书笔记(三)pod中的磁盘挂载,卷/持久卷/持久卷声明
卷(volume)
为了能够让pod在运行期间使用磁盘资源,kubernetes为pod定义了volume属性,和pod拥有相同的生命周期,pod创建时创建 ,pod删除时删除,volume本身并不是一个独立的kubernetes资源对象,而是pod的一个属性,volume可以理解为不同的存储类型,常见的可以支持的类型包括:
- hostPath,将node上的一个目录挂载在pod中
- NFS,network file system,一种网络存储技术
- emptyDir,存储临时数据简单空目录
- gitRepo,用一个具体的git仓库地址对应的内容来初始化的volume
- cephfs,一种分布式的存储技术
- configMap/secret,将一个kubernetes的configmap/sercret内容转存为文件后挂载在pod 对应文件路径下
- persistVolumeClaim,一种动态配置的持久存储类型
对于卷(volume)的使用,一般分两步:
- 声明一个volume
- 挂载应用程序需要的目录到已经声明的volume
一个简单的例子:
apiVersion: v1
kind: Pod
metadata:
name: fortune
spec:
containers:
- image: luksa/fortune
name: html-generator
volumeMounts: //在html卷下挂载一个路径
- name: html
mountPath: /var/htdocs
- image: nginx:alphine
name: web-server
volumeMounts: //在html卷下挂载一个路径
- name: html
mountPath: /usr/share/nginx/html
readOnly: true
volumes: //一个类型为empty的volume,名字叫html
- name: html
emptyDir: {
}
medium: Memory //可以指定卷的类型,使用内存而不是磁盘,提高效率
emptyDir是最简单的卷类型,其他卷都是基于empty进行构建的,举个例子,类型为git-rep