k8s使用nfs持久卷

server/2025/1/24 16:04:30/

开启持久化卷后可以实现服务开启在不同节点也能读取到和拿到服务节点的文件。

基本流程为将集群中一个节点作为服务节点安装共享储存应用的服务端选择目录和开启端口,其他节点根据端口挂载目录。然后使用kubesphere选择相应的镜像并将端口信息和挂载目录信息作为参数来开启容器。容器开启后即可使用集群文件服务。

一、环境

举例机器为两个ubuntu2020系统的节点,其中192.168.1.121作为服务端开启共享目录,192.168.1.122作为客户端挂载121上的共享目录

IP分类
192.168.1.121服务端
192.168.1.122客户端

 二、关闭防火墙

两台机器都关闭一下防火墙

sudo systemctl stop ufwsudo systemctl disable ufw

检查一下是否关闭成功

sudo ufw status

 

三、nfs

1、安装

这边使用nfs作为共享存储应用安装在两个机器上。

首先在服务节点也就是121上下载nfs服务端,执行以下命令:

 sudo apt install nfs-kernel-server

 

然后在客户节点也就是122上下载nfs客户端,执行以下命令:

sudo apt install nfs-common

注:离线环境可以自己根据系统版本准备nfs-utils的离线包,下载失败的可以换个源或者apt update一下

2、启动

服务端也就是我这边环境的121执行下列操作:

首先创建共享文件夹:(可以自己起名,后面同步更改就好了)

mkdir /nfs

赋权:

chmod 775 /nfs

写入配置文件:

echo "/nfs *(rw,sync,no_subtree_check,no_root_squash)" > /etc/exports

不放心可以cat /etc/exports看一下

启动服务,设置自启动:

systemctl start nfs
systemctl enable nfs

验证一下共享文件是否已经开启:

showmount -e 192.168.1.121

可以看到出现/nfs *即为开启成功

四、镜像

大体步骤为将nfs镜像上传到harbor,然后使用kubesphere设置参数开启服务,让kubesphere绑定192.168.1.121上的nfs服务。

1、上传镜像到本地

镜像文件可以直接点击下载:【免费】nfsDocker镜像资源-CSDN文库

下载完解压一下 

直接把文件拷贝到121上,我随便在/opt里建了个nfs的文件夹然后把镜像文件放了进去

执行load命令:

cd /opt/nfs
docker load -i nfs-subdir-external-provisioner.v4.0.2.tar

2、上传镜像到harbor

我这边就使用harbor里安装kubesphere时候创建的kubesphereio项目来存这个镜像

把刚才的镜像改一下标签然后push一下

docker tag registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 dockerhub.kubekey.local/kubesphereio/nfs:v4.0.2docker push dockerhub.kubekey.local/kubesphereio/nfs:v4.0.2

3、开启服务

用到了helm,kk安装完kubesphere应该就有helm了所以不用额外安装了

下载一下文件:【免费】helm创建nfs负载服务包资源-CSDN文库

将nfs-subdir-external-provisioner.zip解压后放到121机器上,并在nfs-subdir-external-provisioner目录中执行命令:

helm install nfs-subdir-external -f values.yaml . -n nfs --create-namespace --set nfs.server=192.168.1.121 --set nfs.path=/nfs --set image.repository=dockerhub.kubekey.local/kubesphereio/nfs --set image.tag=v4.0.2 --set storageClass.name=master-nfs-storage --set storageClass.reclaimPolicy=Retain #--set nfs.server换成你的地址
#--set nfs.path换成你开启的共享文件夹
#--set image.repository换成你的harbor上的镜像

 然后看一下kubsphere上,看到应用已经被安装

五、使用验证

1、创建持久化卷

 往里边随便存点东西,点击查看yaml,然后复制里面的地址

 

 打开121,进入这个文件夹,在里面随便创建个文件夹,后面测试用

cd /nfs/kubesphere-monitoring-system-ceshi-pvc-50811648-88d5-4ab6-a07f-7a8306c15d5fmkdir IAmCeshi

2、创建负载

使用nginx镜像测试,正常创建负载

 为了测试,这边选一下node1节点,也就是我这边的122,看一下存在121中/nfs的文件能否被开在122节点上的服务读取到

点击创建

创建成功

点进入容器终端看一下

 打开终端后进入到刚才创建负载挂的文件夹,也就是刚才的/usr/share/nginx/html/usr/share/nginx/html,可以看到刚才创建的文件夹

 从里面再创建一个文件夹,然后在121上看一下

验证完成可以使用


http://www.ppmy.cn/server/161055.html

相关文章

Couchbase UI: Bucket

Couchbase UI 中的 Bucket 页面是管理和监控 bucket(数据存储单元)的核心部分,它提供了关于 bucket 的详细信息和操作功能。以下是 Bucket 页面主要功能和各部分的介绍: 1. Bucket 列表 (Buckets Overview) 在页面顶部会列出集…

Android各个版本存储权限适配

一、Android6.0-9.0 1、动态权限申请: private static String[] arrPermissions {android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE,android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.…

leetcode 2920. 收集所有金币可获得的最大积分

题目:2920. 收集所有金币可获得的最大积分 - 力扣(LeetCode) 看数据范围是需要O(n*log(n))的算法。可以用dfs记忆化搜索。 考虑到coins[i]的范围是[0, 10000],最多除个十几次2就变成0了。所以用w[i][j]表述节点i在除以j次后&…

上位机知识篇---ROS2命令行命令静态链接库动态链接库

文章目录 前言第一部分:ROS2命令行命令1. 基础命令(1)ros2 run(2)ros2 launch(3)ros2 node(4)ros2 topic(5)ros2 service(6&#xff0…

基于微信小程序的健身管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

Android 极光推送快速开发集成指南(1)

<activity android:name“cn.jpush.android.ui.PushActivity” android:configChanges“orientation|keyboardHidden” android:exported“false” android:theme“android:style/Theme.NoTitleBar” tools:ignore“DuplicateActivity”> <activity android:nam…

PyQt5之QLCDNumber

1. 描述 展示LCD样式的数字&#xff0c;它可以显示几乎任何大小的数字&#xff0c;可以显示十进制&#xff0c;十六进制&#xff0c;八进制或二进制数。 继承自QFrame 2.功能作用 (1) 构造函数 QLCDNumber(parent: QWidget None) QLCDNumber(int, parent: QWidget None)…

【Arduino】语言参考功能

前言 翻译Arduino 参考处列出的常用函数。文中为了减少篇幅&#xff0c;达到能快速翻到查询的目标&#xff0c;在介绍函数中&#xff0c;对部分内容进行了省略&#xff0c;不会列出函数输入参数类型&#xff0c;以及使用注意事项等等&#xff0c;所以若是首次使用或者是调试时出…