当前位置: 首页 > news >正文

k8s 中存储之 NFS 卷

目录

1 NFS 卷的介绍

2 NFS 卷的实践操作

2.1 部署一台 NFS 共享主机

2.2 在所有k8s节点中安装nfs-utils

2.3 部署nfs卷

2.3.1 生成 pod 清单文件

2.3.2 修改 pod 清单文件增加 实现 NFS卷 挂载的 参数

2.3.3 声明签单文件并查看是否创建成功

2.3.4 在 NFS 服务器 创建默认发布文件并访问测试


1 NFS 卷的介绍

HostPath可以解决数据持久化的问题,但是一旦Node节点故障了,Pod如果转移到了别的节点,又会出现问题了,此时需要准备单独的网络存储系统,比较常用的用NFS、CIFS。

NFS是一个网络文件存储系统,可以搭建一台NFS服务器,然后将Pod中的存储直接连接到NFS系统上,这样的话,无论Pod在节点上怎么转移,只要Node跟NFS的对接没问题,数据就可以成功访问。

2 NFS 卷的实践操作

2.1 部署一台 NFS 共享主机

# 部署 NFS 主机
[root@harbor ~]#  yum install nfs-utils -y
[root@harbor ~]#  systemctl enable --now nfs-server.service[root@harbor ~]# vim /etc/exports
/nfsdata   *(rw,sync,no_root_squash)[root@harbor ~]# mkdir /nfsdata# 重新加载配置文件
[root@harbor ~]# exportfs -rv
exporting *:/nfsdata# 查看是否通讯
[root@harbor ~]# showmount  -e
Export list for harbor:
/nfsdata *

2.2 在所有k8s节点中安装nfs-utils

[root@k8s-master & node1 & node2  ~]# yum install nfs-utils -y# 测试是否可用
[root@k8s-master volumes]# showmount -e harbor
Export list for harbor:
/nfsdata *

2.3 部署nfs卷

2.3.1 生成 pod 清单文件

[root@k8s-master volumes]# kubectl run nfs \
--image nginx:latest --port 80 \
--dry-run=client -o yaml > nfs-volume.yml

2.3.2 修改 pod 清单文件增加 实现 NFS卷 挂载的 参数

[root@k8s-master volumes]# vim nfs-volume.yml 
apiVersion: v1
kind: Pod
metadata:labels:run: nfsname: nfs
spec:volumes:# 定义一个名为 cache-vol 的 NFS 卷# NFS 卷允许 Pod 访问远程 NFS 服务器上的文件系统- name: cache-volnfs:server: 192.168.239.50  # NFS 服务器的 IP 地址path: /nfsdata           # 在 NFS 服务器上的路径containers:- image: nginx:latestname: nginxvolumeMounts:# 将 cache-vol 卷挂载到容器内的 /usr/share/nginx/html 路径# 这样容器可以访问远程 NFS 服务器上的 /nfsdata 目录- mountPath: /usr/share/nginx/htmlname: cache-volports:- containerPort: 80  

2.3.3 声明签单文件并查看是否创建成功

# 声明清单文件
[root@k8s-master volumes]# kubectl apply -f nfs-volume.yml# 查看是否创建成功
[root@k8s-master volumes]# kubectl get pods -o wide 
NAME                       READY   STATUS      RESTARTS   AGE     IP            NODE        NOMINATED NODE   READINESS GATES
nfs                        1/1     Running     0          34s     10.244.1.36   k8s-node1   <none>           <none>
nginx-v1-dbd4bc45b-49hhw   1/1     Running     0          3d19h   10.244.2.54   k8s-node2   <none>           <none>
nginx-v2-bd85b8bc4-nqpv2   1/1     Running     0          3d19h   10.244.1.35   k8s-node1   <none>           <none>
testpod                    0/1     Completed   0          3d6h    10.244.2.58   k8s-node2   <none>           <none># 如果访问会显示 fobbiden ,因为在 NFS服务器 的 /nfsdata 目录下并没有文件
[root@k8s-master volumes]# curl 10.244.1.36
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.27.1</center>
</body>
</html>

2.3.4 在 NFS 服务器 创建默认发布文件并访问测试

# NFS 服务器增加数据文件
[root@harbor ~]# cd /nfsdata/
[root@harbor nfsdata]# echo this is NFS server 192.168.239.50 harbor > index.html# 在集群内可以访问到
[root@k8s-master volumes]# curl 10.244.1.36
this is NFS server 192.168.239.50 harbor

http://www.lryc.cn/news/454270.html

相关文章:

  • Redis中BitMap实现签到与统计连续签到功能
  • 【Spring】“请求“ 之传递 JSON 数据
  • 文心一言 VS 讯飞星火 VS chatgpt (359)-- 算法导论24.3 1题
  • Redis-预热雪崩击穿穿透
  • jvisualvm学习
  • Gazebo环境下开源UAV与USV联合仿真平台
  • Linux进程调度和进程切换
  • 机器学习基本上就是特征工程——《特征工程训练营》
  • Android Framework AMS(01)AMS启动及相关初始化1-4
  • 基于基于微信小程序的社区订餐系统
  • [单master节点k8s部署]29.Istio流量管理(五)
  • Something for 24OI
  • 【React】事件机制
  • 华为OD的职级与薪资
  • 【HTML5】html5开篇基础(4)
  • HTTP【网络】
  • MQ延迟消息:原理、实现与应用
  • 计算机网络—大端序和小端序
  • 《OpenCV 计算机视觉》—— Harris角点检测、SIFT特征检测
  • rtmp协议转websocketflv的去队列积压
  • Elasticsearch实战应用:构建高效搜索引擎
  • Hive数仓操作(四)
  • 《C++跨平台开发:突破界限,释放无限可能》
  • 速盾:免备案服务器?
  • Electron获取nodejs和chrome版本信息
  • 【React】setState 批量更新
  • 微信小程序开发日记第二天
  • 如果您忘记了 Apple ID 和密码,按照指南可重新进入您的设备
  • Top4免费音频剪辑软件大比拼,2024年你选哪一款?
  • 基于SSM的电影院售票系统设计与实现