k8s搭建nfs创建pv、pvc
k8s-创建pvNFS1、关闭防火墙systemctl stop firewalld.servicesystemctl disable firewalld.service2、安装配置 nfsyum -y install nfs-utils rpcbind3、共享目录设置权限:chmod 755 /data/k8s/4、在默认配置文件 /etc/exports 下,在该文件中添加下面的配置信息:vi
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 的自动回收失败
更多推荐
所有评论(0)