本机存储PersistentVolume示例

本机存储PersistentVolume示例

Content #

apiVersion: v1
kind: PersistentVolume
metadata:
  name: host-10m-pv

spec:
  storageClassName: host-test
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 10Mi
  hostPath:
    path: /tmp/host-10m-pv/

“storageClassName”,对存储类型的抽象 StorageClass。这个 PV 是我们手动管理的,名字可以任意起,这里我写的是 host-test,你也可以把它改成 manual、hand-work 之类的词汇。

“accessModes”定义了存储设备的访问模式,简单来说就是虚拟盘的读写权限,和 Linux 的文件访问模式差不多,目前 Kubernetes 里有 3 种:

  1. ReadWriteOnce:存储卷可读可写,但只能被一个节点上的 Pod 挂载。
  2. ReadOnlyMany:存储卷只读不可写,可以被任意节点上的 Pod 多次挂载。
  3. ReadWriteMany:存储卷可读可写,也可以被任意节点上的 Pod 多次挂载。

这 3 种访问模式限制的对象是节点而不是 Pod,因为存储是系统级别的概念,不属于 Pod 里的进程。

显然,本地目录只能是在本机使用,所以这个 PV 使用了 ReadWriteOnce。

第三个字段“capacity”就很好理解了,表示存储设备的容量,这里我设置为 10MB。

Kubernetes 里定义存储容量使用的是国际标准,我们日常习惯使用的 KB/MB/GB 的基数是 1024,要写成 Ki/Mi/Gi,一定要小心不要写错了,否则单位不一致实际容量就会对不上。

最后一个字段“hostPath”指定了存储卷的本地路径,也就是我们在节点上创建的目录。

Viewpoints #

From #

24|PersistentVolume:怎么解决数据持久化的难题?