k8s创建pv

NFS
1、关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

2、安装配置 nfs
yum -y install nfs-utils rpcbind

3、共享目录设置权限:
chmod 755 /data/k8s/

4、在默认配置文件 /etc/exports 下,在该文件中添加下面的配置信息:
vi /etc/exports
/data/k8s *(rw,sync,no_root_squash)

5、配置说明

/data/k8s:是共享的数据目录
*:表示任何人都有权限连接,当然也可以是一个网段,一个 IP,也可以是域名
rw:读写的权限
sync:表示文件同时写入硬盘和内存
no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名使用者,通常它的 UID 与 GID,都会变成 nobody 身份
启动服务 nfs 需要向 rpc 注册,rpc 一旦重启了,注册的文件都会丢失,向他注册的服务都需要重启
data/k8s:是共享的数据目录

启动服务 nfs 需要向 rpc 注册,rpc 一旦重启了,注册的文件都会丢失,向他注册的服务都需要重启
systemctl start rpcbind.service
systemctl enable rpcbind
systemctl status rpcbind
在这里插入图片描述
然后启动 nfs 服务
systemctl start nfs.service
systemctl enable nfs
systemctl status nfs
在这里插入图片描述
确认启动成功
rpcinfo -p|grep nfs
在这里插入图片描述
查看具体目录挂载权限
在这里插入图片描述

客户端挂载 nfs 测试
查看共享目录
showmount -e 192.168.31.100
客户端上新建目录
mkdir /data
将 nfs 共享目录挂载到上面的目录
mount -t nfs 192.168.31.100:/data/k8s /data
挂载成功后,在客户端上面的目录中新建一个文件,然后我们观察下 nfs 服务端的共享目录下面是否也会出现该文件:
touch /data/test.txt
然后在 nfs 服务端查看

ls -ls /data/k8s/
total 4
4 -rw-r--r--. 1 root root 4 Jul 10 21:50 test.txt

6、k8s部署测试

PV 存储资源,主要包括存储能力、访问模式、存储类型、回收策略等关键信息,下面我们来新建一个 PV 对象,使用 nfs 类型的后端存储,1G 的存储空间,访问模式为 ReadWriteOnce,回收策略为 Recyle,对应的 YAML 文件如下:
vim k8s-pv-pvc.yaml

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-plugins
spec:
  capacity:
    storage: 50Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    server: 192.168.81.193
    path: "/data/k8s/mnt"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-plugins
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 50Gi

部署
kubectl create -f k8s-pv.yaml
persistentvolume “k8s-pv” created
$ kubectl get pv,pvc -n plugins
在这里插入图片描述

参数说明:

Capacity(存储能力)
一般来说,一个 PV 对象都要指定一个存储能力,通过 PV 的 capacity属性来设置的,目前只支持存储空间的设置,就是我们这里的 storage=1Gi,不过未来可能会加入 IOPS、吞吐量等指标的配置。

AccessModes(访问模式)
AccessModes 是用来对 PV 进行访问模式的设置,用于描述用户应用对存储资源的访问权限,访问权限包括下面几种方式:
ReadWriteOnce(RWO):读写权限,但是只能被单个节点挂载
ReadOnlyMany(ROX):只读权限,可以被多个节点挂载
ReadWriteMany(RWX):读写权限,可以被多个节点挂载
注意:一些 PV 可能支持多种访问模式,但是在挂载的时候只能使用一种访问模式,多种访问模式是不会生效的。

Volume 插件支持的访问模式:

voluem-accessmodes
persistentVolumeReclaimPolicy(回收策略)
我这里指定的 PV 的回收策略为 Recycle,目前 PV 支持的策略有三种:
Retain(保留)- 保留数据,需要管理员手工清理数据
Recycle(回收)- 清除 PV 中的数据,效果相当于执行 rm -rf /thevoluem/*
Delete(删除)- 与 PV 相连的后端存储完成 volume 的删除操作,当然这常见于云服务商的存储服务,比如 ASW EBS。
不过需要注意的是,目前只有 NFS 和 HostPath 两种类型支持回收策略。当然一般来说还是设置为 Retain 这种策略保险一点。
status(状态)
一个 PV 的生命周期中,可能会处于4中不同的阶段:
Available(可用):表示可用状态,还未被任何 PVC 绑定
Bound(已绑定):表示 PV 已经被 PVC 绑定
Released(已释放):PVC 被删除,但是资源还未被集群重新声明
Failed(失败): 表示该 PV 的自动回收失败

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐