基础概念就不总结了,直接搞起
1、安装
1、关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service 2、安装配置 nfs yum -y install nfs-utils rpcbind 3、配置 nfs,nfs 的默认配置文件在 /etc/exports 文件下#更多配置自己查吧 #vi /etc/exports /data/k8s *(rw,sync,no_root_squash) 4、启动服务 nfs,先启动 rpcbind,然后启动 nfs 服务 #rpc: systemctl start rpcbind.service systemctl enable rpcbind systemctl status rpcbind #nfs systemctl start nfs.service systemctl enable nfs systemctl status nfs
2、创建pv
cat pv1-demo.yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv1 spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Recycle nfs: path: /data/k8s server: 10.151.30.57
3、直接使用 kubectl 创建即可
#kubectl create -f pv1-demo.yaml persistentvolume "pv1" created # kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pv1 1Gi RWO Recycle Available
4、访问模式、回收策略、状态
ReadWriteOnce(RWO):读写权限,但是只能被单个节点挂载 ReadOnlyMany(ROX):只读权限,可以被多个节点挂载 ReadWriteMany(RWX):读写权限,可以被多个节点挂载
Retain(保留)- 保留数据,需要管理员手工清理数据 Recycle(回收)- 清除 PV 中的数据,效果相当于执行 rm -rf /thevoluem/* Delete(删除)- 与 PV 相连的后端存储完成 volume 的删除操作,当然这常见于云服务商的存储服务,比如 ASW EBS。 不过需要注意的是,目前只有 NFS 和 HostPath 两种类型支持回收策略。当然一般来说还是设置为 Retain 这种策略保险一点。
一个 PV 的生命周期中,可能会处于4中不同的阶段: Available(可用):表示可用状态,还未被任何 PVC 绑定 Bound(已绑定):表示 PVC 已经被 PVC 绑定 Released(已释放):PVC 被删除,但是资源还未被集群重新声明 Failed(失败): 表示该 PV 的自动回收失败