Kubernetes权威指南七-存储机制
1、概述
Volume是与Pod绑定的,与Pod具有相同生命周期的资源对象。
2、将资源对象映射为存储卷
在Kubernetes中有一些资源对象可以以存储卷的形式挂载为容器的目录或文件,目前包括ConfigMap,Secret,Downward API,ServiceAccountToken,Project volume。
2.1 ConfigMap
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: OPaque
data:
password: dmFSDWUTMg0K
username: dmFSDWUTMg0K
创建pod挂载
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: mypod image: redis volumeMounts: - name: foo mountPath: "/etc/foo" volumes: - name: foo secret: secretName: mysecret
3、Node本地存储卷
3.1 EmptyDir
此类型的Volume将在Pod被调度到Node时候进行创建,在出事状态下目录中是空的,所以命名为“空目录”(Empty Directory),它与Pod具有相同的说明周期,当Pod被销毁时候,Node上相应的目录也会被删除。
apiVersion: v1 kind: Pod metadata: name: emptytest spec: containers: - name: em image: busybox volumeMounts: - mountPath: /cache name: cache-volume volumes: - name: cache-volume emptyDir: {}
3.2 HostPath
HostPath类型的存储卷用于将Node文件系统的目录或文件挂载到容器内部使用。应用场景如下:
1、容器应用的关键数据需要被持久化到宿主机上
2、需要使用Docker中的某些内部数据,可以将主机的/var/lib/docker目录挂载到容器内。
3、监控系统
4、Pod的启动以来宿主机的目录或文件。
HostPath设置的宿主机目录或文件不会随着Pod的销毁而删除,在Pod不在存在之后,需要管理员手动删除;
apiVersion: v1 kind: Pod metadata: name: hostpath spec: containers: - name: host image: busybox volumeMounts: - mountPath: /host-data name: test-host volumes: - name: test-host hostPath: path: /data3 type: Directory
4、持久卷(Persistent Volume)
4.1资源供应
资源供应的结果就是将合适的PV与PVC成功绑定。
静态模式(Static)
管理员预先创建许多PV,在PV中定义能够体现资源的特性。
动态模式(Dynamic)
集群管理员无需预先创建PV,而是通过StorageClass的设置对后端存储进行资源描述,标记存储的类型和特性。用户通过创建PVC对存储类型进行申领,系统将自动完成PV的创建以及PVC的绑定。
4.2 资源使用