8s nfs 挂载文件_Kubernetes集群使用网络存储NFS

2653b85efcb0bf6d379b5a9fbdb6d7f7.gif

NFS存储

NFS即网络文件系统Network File System,它是一种分布式文件系统协议,最初是由Sun MicroSystems公司开发的类Unix操作系统之上的一款经典网络存储方案,其功能是在允许客户端主机可以像访问本地存储一样通过网络访问服务端文件。

Kubernetes的NFS存储用于将某事先存在的NFS服务器导出export的存储空间挂载到Pod中来供Pod容器使用。与emptyDir不同的是,NFS存储在Pod对象终止后仅是被卸载而非删除。另外,NFS是文件系统及共享服务,它支持同时存在多路挂载请求。定义NFS存储时,常用到以下字段。

•server:NFS服务器的IP地址或者主机名,必选字段。•path:NFS服务器导出(共享)的文件系统路径,必选字段。•readOnly:是否以只读挂载,默认为false。

1.部署一个NFS服务 在集群之外的节点192.168.31.241

#ubuntu部署sudo apt install nfs-kernel-server#centos部署yum -y install rpcbind nfs-utils
#创建要共享的目录mkdir /data/redis -p#编辑NFS配置并加入以下内容vim /etc/exports/data/redis 192.168.31.0/24(rw,sync,no_all_squash,no_subtree_check)#载入配置exportfs -rv

•/data/redis:NFS服务要共享的目录•192.168.31.0/24:允许访问NFS服务器的网段,也可以写 * ,表示所有地址都可以访问NFS服务•rw:访问到此目录的服务器都具备读写权限•sync:数据同步写入内存和硬盘•no_all_squash:所有用户对根目录具备完全管理访问权限•no_subtree_check:不检查父目录的权限

启动NFS服务

#ubuntu启动systemctl start nfs-kernel-server#centos启动systemctl start rpcbind nfs

服务检查

#查看NFS配置是否生效cat /var/lib/nfs/etab/data/redis    192.168.31.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)#通过showmount命令查看NFS共享情况showmount -e 192.168.31.241Export list for 192.168.31.241:/data/redis 192.168.31.0/24

2.创建Pod资源配置清单 Pod中使用Redis镜像来运行容器,将Redis数据持久化至NFS服务器上,下面是简单实用Redis的一个示例:

cat redis-nfs.yamlapiVersion: v1kind: Podmetadata:  name: vol-nfs-pod  labels:    app: redisspec:  containers:  - name: redis    image: redis:5.0           #镜像版本    ports:    - containerPort: 6379      #容器端口      name: redisport    volumeMounts:    - mountPath: /data         #卷挂载到容器中的目录      name: redisdata          #卷名称  volumes:  - name: redisdata             #卷名称    nfs:                        #使用NFS网络存储卷      server: 192.168.31.241    #NFS服务器地址      path: /data/redis         #NFS服务器共享的目录      readOnly: false           #是否为只读

上面的示例定义在资源配置文件vol-nfs.yaml中,其中的Pod资源拥有一个关联至NFS服务器192.168.31.241的存储卷,Redis容器将其挂载到容器中的/data目录上,它是运行于容器中的redis-server数据的持久保持位置。

提示:这里应确保事先要存在一个名为192.168.31.241的NFS服务器,其输出了/data/redis目录,并授权给Kubernetes集群中的节点访问。主机和目录都可以按需进行调整。

3.创建Pod对象并查看配置信息

kubectl apply -f redis-nfs.yaml

如下vol-nfs-pod被调度到了k8s-node03上

kubectl get pods -o wide -l app=redisNAME          READY   STATUS    RESTARTS   AGE    IP            NODE         NOMINATED NODE   READINESS GATESvol-nfs-pod   1/1     Running   0          106s   172.20.3.31   k8s-node03              
kubectl describe pods/vol-nfs-podName:         vol-nfs-podNamespace:    defaultPriority:     0Node:         k8s-node03/192.168.31.233Start Time:   Tue, 23 Jun 2020 13:47:29 +0800Labels:       app=redisAnnotations:  Status:  RunningIP:           172.20.3.31IPs:  IP:  172.20.3.31Containers:  redis:    Container ID:   docker://dfa1a8202b39460db9e1d9849d6a4d416ab50a33e48fae556d1248a8efb3193b    Image:          redis:5.0    Image ID:       docker-pullable://redis@sha256:faea2a6e7fbd7e144cdb15e12ff16c24a5b8d9469e25796ec6d3b7a82a817e1b    Port:           6379/TCP    Host Port:      0/TCP    State:          Running      Started:      Tue, 23 Jun 2020 13:47:30 +0800    Ready:          True    Restart Count:  0    Environment:        Mounts:      /data from redisdata (rw)             #挂载到容器中的路径      /var/run/secrets/kubernetes.io/serviceaccount from default-token-xxqkj (ro)Conditions:  Type              Status  Initialized       True  Ready             True  ContainersReady   True  PodScheduled      TrueVolumes:  redisdata:    Type:      NFS (an NFS mount that lasts the lifetime of a pod)      #NFS类型挂载    Server:    192.168.31.241               #Server是192.168.31.241    Path:      /data/redis                  #Server的路径    ReadOnly:  false                        #不是只读  default-token-xxqkj:    Type:        Secret (a volume populated by a Secret)    SecretName:  default-token-xxqkj    Optional:    falseQoS Class:       BestEffortNode-Selectors:  Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s                 node.kubernetes.io/unreachable:NoExecute for 300sEvents:  Type    Reason     Age    From                 Message  ----    ------     ----   ----                 -------  Normal  Scheduled  2m29s  default-scheduler    Successfully assigned default/vol-nfs-pod to k8s-node03  Normal  Pulled     2m28s  kubelet, k8s-node03  Container image "redis:5.0" already present on machine  Normal  Created    2m28s  kubelet, k8s-node03  Created container redis  Normal  Started    2m28s  kubelet, k8s-node03  Started container redis

4.查看容器挂载情况

kubectl exec -it vol-nfs-pod -- df -hT | grep dataFilesystem                 Type     Size  Used Avail Use% Mounted on192.168.31.241:/data/redis nfs4      59G  9.4G   47G  17% /data#查看/data目录下的数据kubectl exec -it vol-nfs-pod -- ls /datadump.rdb

5.资源创建完成后,可通过其命令客户端redis-cli创建测试数据,并手动触发其同步于存储系统中

kubectl exec -it vol-nfs-pod -- redis-cli127.0.0.1:6379> set mykey 'hello world'OK127.0.0.1:6379> get mykey"hello world"127.0.0.1:6379> BGSAVEBackground saving started127.0.0.1:6379> exit

6.测试数据持久化 为了测试数据持久化效果,下面删除Pod资源vol-nfs-pod,然后再对该Pod重建查看数据是否能够正常访问

#删除Podkubectl delete pods vol-nfs-pod#重建Podkubectl apply -f redis-nfs.yaml#连接到Redis容器并查看数据持久化效果kubectl exec -it vol-nfs-pod -- redis-cli127.0.0.1:6379> keys *1) "mykey"127.0.0.1:6379> get mykey"hello world"

如上所示可以看到,此前创建的mykey及其数据在Pod资源重建后依然存在。

☆ END ☆

898cf41f38290df05383ed6d86689d15.png

5feaf1802ea62d34581ab1cc49c7de84.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2030全球新出行产业报告:2.2万亿美元蛋糕将这样分

来源:智东西 概要:汽车与出行产业面临的电动化、智能化、共享化以及轻量化变革,已经成了全球共识。

实现pv uv统计_聊聊前端监控(二)--行为监控的技术实现

上一篇梳理了前端监控的主要场景和类型,从本文开始,讨论下我知道的一些技术实现。前端黑科技层出不穷,个人眼界有限,尽量把了解到的实现方式都罗列出来,希望对大家有些启发,同时也欢迎流言讨论。限于篇幅&a…

Science:揭示人类大脑进化机制

来源:细胞 概要:人类与其它灵长类动物的最大区别在于我们大脑的不同,这也是我们作为人类最特殊的标志之一。 人类与其它灵长类动物的最大区别在于我们大脑的不同,这也是我们作为人类最特殊的标志之一。 然而,人类与灵长…

单元格格式_单元格格式的用法你知道吗~~

想了解excel吗??? 想从小白变大神吗??? 快来look look excel单元格格式的用处吧!!!先来了解一下单元格格式的…

人工智能名人堂第54期 | 深度学习鼻祖:Geoffrey Hinton

来源:德先生 概要:近日,他因提出capsule 概念,推翻反向传播再次引发广泛关注与热议。 Geoffrey Hinton,被称为“神经网络之父”、“深度学习鼻祖”,他曾获得爱丁堡大学人工智能的博士学位,并且为…

eureka和zookeeper的区别

首先我们先说下: RDBMS>(MySql,Oracle,SqlServer等关系型数据库)遵循的原则是:ACID原则(A:原子性。C:一致性。I:独立性。D:持久性。)。 NoSql> &#…

struts2 防止重复提交 与 进入等待画面

演示重复提交的错误&#xff1a; 相关文件&#xff1a; struts.xml <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache…

征服围棋之后 谷歌DeepMind宣布利用AI对抗乳腺癌

来源&#xff1a;全球人工智能 概要&#xff1a;在征服围棋世界之后&#xff0c;DeepMind公司将许多机器学习资源用于提升医疗水平&#xff0c;今天&#xff0c;DeepMind宣布利用人工智能对抗乳腺癌。 在征服围棋世界之后&#xff0c;DeepMind公司将许多机器学习资源用于提升医…

rabbitmq详细入门文档+springboot结合使用

在介绍RabbitMQ之前&#xff0c;我们先来看下面一个电商项目的场景&#xff1a; 商品的原始数据保存在数据库中&#xff0c;增删改查都在数据库中完成。 搜索服务数据来源是索引库&#xff08;Elasticsearch&#xff09;&#xff0c;如果数据库商品发生变化&#xff0c;索引库…

Cognizant:走向2028年将诞生的21个新工作

来源&#xff1a;亿欧 概要&#xff1a;未来十多年&#xff0c;伴随着AI等新技术的发展&#xff0c;部分工作岗位可能消失&#xff0c;但也可能创造出很多新的工作机会。 未来十多年&#xff0c;伴随着AI等新技术的发展&#xff0c;部分工作岗位可能消失&#xff0c;但也可能创…

delphi excel取批注所在的行列_excel技巧教程丨34个常用Excel小技巧,助你玩转职场!...

技巧1&#xff1a;单元格内强制换行在单元格中某个字符后按alt回车键&#xff0c;即可强制把光标换到下一行中。技巧2&#xff1a;锁定标题行选取第2行&#xff0c;视图 - 冻结窗格 - 冻结首行(或选取第2行 - 冻结窗格)冻结后再向下翻看时标题行始终显示在最上面。技巧3&#x…

Spring Security用户认证和权限控制(默认实现)

1 背景 实际应用系统中&#xff0c;为了安全起见&#xff0c;一般都必备用户认证&#xff08;登录&#xff09;和权限控制的功能&#xff0c;以识别用户是否合法&#xff0c;以及根据权限来控制用户是否能够执行某项操作。 Spring Security是一个安全相关的框架&#xff0c;能…

2017年数据可视化的七大趋势!

来源&#xff1a; 全球人工智能 概要&#xff1a;随着科技的不断进步与新设备的不断涌现&#xff0c;数据可视化领域目前正处在飞速地发展之中。 随着科技的不断进步与新设备的不断涌现&#xff0c;数据可视化领域目前正处在飞速地发展之中。ProPublica的调查记者兼开发者Lena…

struts2中用interceptor实现权限控制

在jsp servlet中我们通常使用Servlet Filter控制用户是否登入&#xff0c; 是否有权限转到某个页面。在struts2中我们应该会想到他的拦截器(Interceptor)&#xff0c; Interceptor在struts2中起着非常重要的作用。很多struts2中的功能都是使用Interceptor实现的。 需求&#xf…

CGAL的三维点集

CGAL提供了几种处理点集的算法&#xff0c;从形状检测到通过标准点集处理工具进行的表面重建。 虽然这些算法不强制使用特定的数据结构&#xff0c;但该软件包提供了一个3D点集结构&#xff0c;使用户更容易处理附加属性&#xff0c;如法向量、颜色、标签&#xff0c;并在其上调…

2018年AI智商将达到多少?未来智能实验室启动第三次世界AI智商评测

来源&#xff1a; 人工智能学家 概要&#xff1a;21世纪以来&#xff0c;人工智能领域陆续爆发很多重要事件。其中最吸引人们眼球的&#xff0c;当属2016年战胜了人类围棋冠军并开始能够从0自我学习的AlphaGo。 一.人工智能能否超越人类智慧的争议 21世纪以来&#xff0c;人工智…

二进制函数_Go二进制文件逆向分析从基础到进阶——MetaInfo、函数符号和源码文件路径列表...

书接前文&#xff0c;本文主要介绍 Go 二进制文件中 Meta Information 的解析&#xff0c;与函数符号和源码文件路径列表的提取。最后详细介绍一下 Moduledata 这个结构。传送门&#xff1a;Go二进制文件逆向分析从基础到进阶——综述05Meta information>>>>5.1 Go…

七大科技巨头统治世界?

来源&#xff1a;亿欧智库 概要&#xff1a;我想无论是业内人士还是普通用户&#xff0c;都会思考为什么是他们成为最大的公司&#xff1f; 2017年秋天&#xff0c;随着腾讯和阿里巴巴两家中国公司市值的不断上涨&#xff0c;全球市值头部公司刚好是七大科技巨头&#xff08;下…

用户权限管理——DB设计篇

来源&#xff1a;http://www.noahweb.net/mail/2/Project.htm#biao B/S系统中的权限比C/S中的更显的重要&#xff0c;C/S系统因为具有特殊的客户端&#xff0c;所以访问用户的权限检测可以通过客户端实现或通过客户端服务器检测实现&#xff0c;而B/S中&#xff0c;浏览器是每一…