由于服务在k8s集群是以容器方式启动,容器重启的话数据会丢失,所以我们一般会把重要的数据挂载到机器上,这里使用NFS做k8s的持久卷。
部署NFS 服务端
关闭防火墙
1 | $ systemctl stop firewalld.service |
安装配置 nfs
1 | $ yum -y install nfs-utils rpcbind |
共享目录设置权限:以 /data/k8s目录存放数据
1 | chmod 755 /data/k8s/ |
配置 nfs,nfs 的默认配置文件在 /etc/exports 文件下,在该文件中添加下面的配置信息:
1 | $ vi /etc/exports |
配置说明:
/data/k8s:是共享的数据目录
*:表示任何人都有权限连接,当然也可以是一个网段,一个 IP,也可以是域名
rw:读写的权限
sync:表示文件同时写入硬盘和内存
no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名使用者,通常它的 UID 与 GID,都会变成 nobody 身份
启动服务 nfs 需要向 rpc 注册,rpc 一旦重启了,注册的文件都会丢失,向他注册的服务都需要重启
1 | $ systemctl start rpcbind.service |
running 证明启动成功了。
然后启动 nfs 服务
1 | $ systemctl start nfs.service |
acticve代表启动成功
另外我们还可以通过下面的命令确认下:
1 | $ rpcinfo -p|grep nfs |
查看具体目录挂载权限:
1 | $ cat /var/lib/nfs/etab |
到这里我们就把 nfs server 给安装成功了。
在其他机器查看共享目录
1 | sudo showmount -e 192.168.108.100 |
返回值如下,表示创建成功
1 | Export list for 192.168 : |
设置存储分配器的权限
创建nfs-client-provisioner-authority.yaml文件
1 | apiVersion: v1 |
创建NFS存储分配器
创建nfs-client-provisioner.yaml文件
1 | apiVersion: apps/v1 |
创建StorageClass
创建nfs-storage-class.yaml文件
1 | apiVersion: storage.k8s.io/v1 |
查看StorageClass
1 | kubectl get storageclass |
创建PVC
创建nfs-pvc.yaml文件
1 | apiVersion: v1 |
查看PVC
1 | kubectl get pvc |
创建Deployment控制器
创建nfs-deployment-python.yaml文件
1 | apiVersion: apps/v1 |