上一节我们介绍了
PV 和 PVC,
本节通过 NFS 实践。
作为准备工作,我们已经在 k8s-master 节点上搭建了一个 NFS 服务器,目录为
/nfsdata
:
下面创建一个 PV
mypv1
,配置文件
nfs-pv1.yml
如下:
①
capacity
指定 PV 的容量为 1G。
②
accessModes
指定访问模式为
ReadWriteOnce
,支持的访问模式有:
ReadWriteOnce – PV 能以 read-write 模式 mount 到单个节点。
ReadOnlyMany – PV 能以 read-only 模式 mount 到多个节点。
ReadWriteMany – PV 能以 read-write 模式 mount 到多个节点。
③
persistentVolumeReclaimPolicy
指定当 PV 的回收策略为
Recycle
,支持的策略有:
Retain – 需要管理员手工回收。
Recycle – 清除 PV 中的数据,效果相当于执行
rm -rf /thevolume/*
。
Delete – 删除 Storage Provider 上的对应存储资源,例如 AWS EBS、GCE PD、Azure Disk、OpenStack Cinder Volume 等。
④
storageClassName
指定 PV 的 class 为
nfs
。相当于为 PV 设置了一个分类,PVC 可以指定 class 申请相应 class 的 PV。
⑤ 指定 PV 在 NFS 服务器上对应的目录。
创建
mypv1
:
STATUS
为
Available
,表示
mypv1
就绪,可以被 PVC 申请。
接下来创建 PVC
mypvc1
,配置文件
nfs-pvc1.yml
如下:
PVC 就很简单了,只需要指定 PV 的容量,访问模式和 class。
创建
mypvc1
:
从
kubectl get pvc
和
kubectl get pv
的输出可以看到
mypvc1
已经 Bound 到
mypv1
,申请成功。
接下来就可以在 Pod 中使用存储了,Pod 配置文件
pod1.yml
如下:
与使用普通 Volume 的格式类似,在
volumes
中通过
persistentVolumeClaim
指定使用
mypvc1
申请的 Volume。
创建
mypod1
:
验证 PV 是否可用:
可见,在 Pod 中创建的文件
/mydata/hello
确实已经保存到了 NFS 服务器目录
/nfsdata/pv1
中。
如果不再需要使用 PV,可用删除 PVC 回收 PV,下节我们详细讨论。
书籍:
1.《每天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html(点击“阅读原文”直达)
2.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
3.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html