目录
NFS
NFS是主流的k8s数据持久化解决方案与pod共享存储解决方案
NFS数据卷:提供对NFS挂载支持,可以自动将NFS共享
路径挂载到Pod中
NFS:是一个主流的文件共享服务器
部署nfs
1、实施nfs(所有节点)
yum install nfs-utils -y
2、选择一台nfs-utils服务器作为数据节点,并进行配置
修改nfs服务器配置
vi /etc/exports
这*代表所有ip可以访问,rw代表对此目录有读写权限,no_root_squash代表他是root身份运行
/ifs/kubernetes *(rw,no_root_squash)
新建此数据目录
mkdir /ifs/kubernetes -p
启动服务并设置开机自启
systemctl start nfs
systemctl enable nfs
测试
进去其他k8s节点,远程挂载nfs节点数据,命令(ip为nfs数据节点ip),在挂载节点新建一个文件然后取消挂载
mount -t nfs 192.168.209.112:/ifs/kubernetes /mntcd /mnttouch aaaumount /mnt
在nfs服务器可以看到刚刚新建的文件夹
k8s中使用nfs示例
创建一个deployment.yaml
vi deployment-nfs.yaml
apiVersion: apps/v1kind: Deploymentmetadata:name: web-nfsspec:selector:matchLabels:app: nginxreplicas: 3template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxvolumeMounts:- name: wwwrootmountPath: /usr/share/nginx/htmlvolumes:- name: wwwrootnfs:server: 192.168.209.112path: /ifs/kubernetes
kubectl apply -f deployment-nfs.yaml
测试数据共享
先验证他们数据是否共享
可以看到,进入第一个容器的html目录创建了一个bbb文件,退出后进去第二个容器的html目录。bbb已经被同步过来,即这个deployment的三个容器的html文件实现了共享
进入他们远程挂载的nfs服务器目录
可以看见容器内挂载路径的数据也被同步到这里了
同时,我在nfs服务器对应挂载路径上创建一个index首页
进入容器查看,可以看见已经同步到了容器内
curl每个pod,内容一样
测试数据持久化
测试pod删除后新建的pod是否能够获取这个持久化文件
kubectl delete pod web-nfs-96f7f9594-4rz7v
可以看到,即便删除容器,deployment自恢复新建的容器,容器内也能访问到之前持久化的数据