k8s学习(三)
k8s学习(三)
基于《Kubernetes in Action》
Volume
pod的一部分,和pod共享相同的生命周期。即在pod启动的时候创建卷,并在删除pod的时候销毁卷。用于pod内共享数据(hostPath除外
可用的volume类型:
emptyDir : 存储临时数据的简单空目录
hostPath : 将目录从工作节点的文件系统挂载到pod中
gitRepo : 检出Git仓库的内容来初始化
nfs : 挂载到pod中的NFS共享卷
configMap, secret等其它类型
emptyDir:
创建包含共用卷的pod,eg:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
apiVersion: v1
kind: Pod
metadata:
name: fortune
spec:
containers:
- image: luksa/fortune
name: html-generator
volumeMounts:
- name: html
mountPath: /var/htdocs
- image: nginx:alpine
name: web-server
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
readOnly: true
ports:
- containerPort: 80
protocol: TCP
volumes:
- name: html
emptyDir: {}
#medium: Memory 文件存储在内存中,一般在实际磁盘上创建gitRepo:
不过是一个emptyDir然后填充了指定Git仓库的内容。而且它不会随着git仓库的更新而更新,只有当之间被rc托管后删除,再创建一个新的pod,此时初始化的就是最新的git仓库的内容。
如图:
hostPath:
用于读取节点的文件或以此来使用节点文件系统来访问节点设备。是持久性存储,但一般只用于访问而不是存储。
持久化存储:
需要pod中的应用程序将数据保存到硬盘上,且调度到另一节点也具有相同的数据。
持久卷(PV) : 管理员设置底层存储,通过k8s API服务器创建持久卷并注册
持久卷声明(PVC) : 集群用户需要在其pod中使用持久卷需要先创建持久卷声明清单,指定所需的最低容量要求和访问模式,然后提交给API服务器。API服务器找到可匹配的持久卷后将其绑定到用户的持久卷声明,最后用户创建一个pod并通过卷配置来引用其声明。
如图:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Legendary!