【实战】Kubernetes安装持久化工具NFS-StorageClass
文章目录
- 前言
- 技术积累
- 存储类(storage class)
- 什么是NFS
- 什么是PV\PVC
- 为什么要用NFS-StorageClass
- 安装NFS-StorageClass
- 保证K8S集群正常投用
- 安装NFS工具与客户端
- NFS安装常见错误
- 安装NFS-StorageClass存储器
前言
前面的博文我们介绍了如何用kuberadmin的架构概述与简单执行流程,以及部署K8S集群的详细步骤。今天我们继续介绍如何安装持久化工具NFS-StorageClass。
技术积累
存储类(storage class)
存储类是Kubernetes资源类型的一种,是管理员为创建PV方便而按需创建的类别。
要使用 StorageClass,就得安装对应的自动配置程序,比如这里存储后端使用的是 nfs,那么就需要使用到一个 nfs-client 的自动配置程序,也叫它 Provisioner,这个程序使用我们已经配置好的 nfs 服务器,来自动创建持久卷,也就是自动创建 PV。PV、PVC和StorageClass之间的运作关系如下图所示:

什么是NFS
网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。
NFS是主流的k8s数据持久化解决方案与pod共享存储解决方案;NFS数据卷提供对NFS挂载支持,可以自动将NFS共享 路径挂载到Pod中;NFS是一个主流的文件共享服务器。
什么是PV\PVC
在Kubernetes中,PV(Persistent Volume)网络管理员配置的存储和PVC(Persistent Volume Claim)用户申请的存储是用于持久化存储的两个概念,
它们的区别如下:
PV是实际的存储资源,例如物理存储设备、网络存储设备等。PVC是对PV的请求,描述了应用程序需要多少存储资源以及存储资源的属性。
PV由管理员手动配置,而PVC由应用程序自动创建。应用程序在需要持久化存储时,可以创建一个PVC,Kubernetes将根据PVC的要求自动查找或创建一个匹配的PV,并将PV与PVC进行绑定。
PV和PVC是分离的概念,它们可以独立地管理。当一个PVC被删除时,它所绑定的PV并不会立即被删除。相反,PV会被标记为"Released"状态,等待管理员手动删除。
PV和PVC之间的绑定是一对一的关系。一个PVC只能绑定一个PV,而一个PV只能被一个PVC绑定。但是,多个PVC可以绑定同一个PV,以实现共享存储。
PV可以设置访问模式(Access Modes),例如ReadWriteOnce、ReadWriteMany和ReadOnlyMany。Access Modes定义了多个Pod如何访问同一个PV。例如,ReadWriteOnce表示PV只能被一个Pod以读写方式访问,而ReadWriteMany表示PV可以被多个Pod以读写方式访问。
为什么要用NFS-StorageClass
PV 都是静态的,要使用的一个 PVC 的话就必须手动去创建一个 PV,这种方式在很大程度上并不能满足我们的需求,比如我们有一个应用需要对存储的并发度要求比较高,而另外一个应用对读写速度又要求比较高,特别是对于 StatefulSet 类型的应用简单的来使用静态的 PV 就很不合适了,这种情况下我们就需要用到动态 PV,这就需要 StorageClass动态的创建PV。
要使用 StorageClass,需要安装对应的自动配置程序,比如我们这里存储使用的是 NFS,那么我们就需要使用到一个 nfs-client 的自动配置程序,我们也叫它 Provisioner,这个程序使用我们已经配置好的 NFS服务器,来自动创建持久卷,也就是自动帮我们创建 PV。
安装NFS-StorageClass
保证K8S集群正常投用
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 60d v1.27.2
node1 Ready <none> 60d v1.27.2
node2 Ready <none> 60d v1.27.2
[root@master ~]#
安装NFS工具与客户端
# 所有kubernetes集群节点中都需要安装nfs
[root@master ~]# yum install -y nfs-utils# 在master节点中执行
[root@master ~]# echo "/data/nfs *(insecure,rw,sync,no_root_squash)" > /etc/exports
[root@master ~]# mkdir -p /data/nfs && chmod -R 777 /data/nfs
[root@master ~]# exportfs -r
#master节点启动rpc 与 nfs
[root@master ~]# systemctl enable rpcbind && systemctl start rpcbind
[root@master ~]# systemctl enable nfs && systemctl start nfs#在所有的node节点执行
[root@master ~]# systemctl enable rpcbind && systemctl start rpcbind
[root@master ~]# systemctl enable nfs && systemctl start nfs
[root@master ~]# showmount -e master#验证k8s集群节点nfs工具安装和配置正确
[root@master ~]# showmount -e master
Export list for master:
/data/nfs *
[root@master ~]#
如下图所示表示安装成功:

NFS安装常见错误
1、clnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused)
需要关闭服务端和客户端防火墙以及selinux。
安装NFS-StorageClass存储器
创建k8s执行文件
[root@master ~]# vim nfs-storage.yaml
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-storageannotations:storageclass.kubernetes.io/is-default-class: "true"
provisioner: nfs-provisioner
parameters:archiveOnDelete: "true" ---
apiVersion: apps/v1
kind: Deployment
metadata:name: nfs-client-provisionerlabels:app: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisionercontainers:- name: nfs-client-provisionerimage: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/nfs-subdir-external-provisioner:v4.0.2# resources:# limits:# cpu: 10m# requests:# cpu: 10mvolumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: nfs-provisioner- name: NFS_SERVERvalue: 10.10.22.91 ## master nfs服务器IP- name: NFS_PATH value: /data/nfs ## nfs服务器共享的目录路径volumes:- name: nfs-client-rootnfs:server: 10.10.22.91path: /data/nfs
---
apiVersion: v1
kind: ServiceAccount
metadata:name: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: nfs-client-provisioner-runner
rules:- apiGroups: [""]resources: ["nodes"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["events"]verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: run-nfs-client-provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
rules:- apiGroups: [""]resources: ["endpoints"]verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
subjects:- kind: ServiceAccountname: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io
执行k8s安装文件
#执行nfs-storageclass安装文件
[root@master ~]# kubectl apply -f nfs-storage.yaml
#验证执行结果
[root@master ~]# kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-storage (default) nfs-provisioner Delete Immediate false 60d
[root@master ~]#
如下图所示表示安装成功:

⭐️路漫漫其修远兮,吾将上下而求索 🔍
相关文章:
【实战】Kubernetes安装持久化工具NFS-StorageClass
文章目录 前言技术积累存储类(storage class)什么是NFS什么是PV\PVC为什么要用NFS-StorageClass 安装NFS-StorageClass保证K8S集群正常投用安装NFS工具与客户端NFS安装常见错误安装NFS-StorageClass存储器 前言 前面的博文我们介绍了如何用kuberadmin的…...
透明安全地解释Moonbeam基金会分配的GLMR去了哪
在GLMR分配比例中,约有16.7%的GLMR分配给了生态支持。这部分GLMR究竟用在了哪里,Moonbeam生态是否还有足够的GLMR扶持生态项目? Moonbeam基金会每隔半年会发布一份GLMR透明度报告,最近的报告日期为2023年7月31日。其中列出了社区…...
python安装包失败 安装scipy包
最近在配深度学习环境,安装好了conda、CUDA、cuDNN,运行之后报错,没有scipy包。 试了很多方法: 用命令行pip、conda install 在pycharm下载包 在环境中添加包 都失败了 要么直接ERROR,要么超时 问了师兄 需要在conda环…...
解决javascript报错:SyntaxError: Invalid Unicode escape sequence
在处理cookie时报这个错: 网上搜了一圈都说是反斜杠问题,要把\替换成/ 但是试了网上的replace替换: replace(/\\/g, /) 结果没有用!!! 然后我干脆直接做了一个最简单字符串赋值,再打印出来。…...
【Python第三方包】使用Python的Translate包进行文本翻译
文章目录 前言一、Translator类的初始化参数二、translate函数三、翻译示例代码1.1 示例代码11.2 示例代码2总结前言 在现代互联网时代,跨语言翻译已经成为了不可或缺的工具。不仅对于个人,对于企业和开发者来说,实现文本翻译在国际化、多语言支持以及内容本地化方面都具有…...
【OpenCV实现图像阈值处理】
文章目录 概要简单阈值调整自适应阈值调整大津(Otsus)阈值法Otsus 二值化是如何工作的 概要 OpenCV库中的图像处理技术,主要分为几何变换、图像阈值调整和平滑处理三个部分。 在几何变换方面,OpenCV提供了cv.warpAffine和cv.warpPerspective函数&#…...
【Python机器学习】零基础掌握StackingRegressor集成学习
如何更准确地预测糖尿病患者的血糖水平? 糖尿病是一种影响全球数百万人的慢性疾病。有效地管理和预测血糖水平是糖尿病患者日常生活的重要一环。单一的预测模型(比如线性回归、支持向量机等)虽然有一定的效果,但在处理复杂的医疗数据时,其准确性可能会受到限制。 为了准…...
JVM(Java Virtual Machine)G1收集器篇
前言 本文参考《深入理解Java虚拟机》,本文主要介绍G1收集器的收集思想和具体过程(填上一篇文章留下的坑) 本系列其他文章链接: JVM(Java Virtual Machine)内存模型篇 JVM(Java Virtual Machi…...
微信小程序设计之主体文件app-json-tabBar
一、新建一个项目 首先,下载微信小程序开发工具,具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后,注册小程序账号,具体注册方法,可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…...
GZ035 5G组网与运维赛题第2套
2023年全国职业院校技能大赛 GZ035 5G组网与运维赛项(高职组) 赛题第2套 一、竞赛须知 1.竞赛内容分布 竞赛模块1--5G公共网络规划部署与开通(35分) 子任务1:5G公共网络部署与调试(15分) 子任务2:5G室内与室外站点建设(20分) 竞赛模块2--5G公共网络运维与优化(…...
如何训练Embedding Model
BGE的技术亮点: 高效预训练和大规模文本微调;在两个大规模语料集上采用了RetroMAE预训练算法,进一步增强了模型的语义表征能力;通过负采样和难负样例挖掘,增强了语义向量的判别力;借鉴Instruction Tuning的…...
springboot配置redis、Spring cache
1.Jedis库 依赖库 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.0.2</version> </dependency>使用案例: Testpublic void jedis(){Jedis jedis new Jedis("127…...
悟空crm安装搭建 报错[0] RedisException in Redis.php line 56问题处理办法
相信很多朋友进行安装悟空crm的时候 提示错误: [0] RedisException in Redis.php line 56 Connection refused 不知道怎么样处理是吧~~~ $this->options array_merge($this->options, $options);}# redis 密码$password config(cache.password);if (!empty…...
Ubuntu22.04 交叉编译阿里oss c-sdk
一、交叉编译openssl Ubuntu20.04 交叉编译openssl 1.0.1f_编译前去除 makefile 中所有的"-m64"字段_qq76211822的博客-CSDN博客文章浏览阅读319次。Ubuntu20.04 交叉编译openssl_编译前去除 makefile 中所有的"-m64"字段https://blog.csdn.net/sz7621182…...
arch linux 安装 vsftpd 配置虚拟用户
后面操作会直接基于 yay 操作 自行查找如何安装 yay 公司经常会用到 ftp 服务 不想用 apache 的 ftp server 所以自己在小机器上撞了 arch linux 用来安装软件 跑程序等。 1. 安装 vsftpd yay vsftpd --noconfirm选择 1 安装 输入密码 2. 安装 pam_pwdfile 安装 pam_pwdf…...
Django的查询所有,根据用户名查询,增加用户操作
1.路由 from meiduo_admin.user.user_views import UsersViewurlpatterns [# 用户操作路由path(users/, UsersView.as_view()), ]2. 序列化器 from rest_framework import serializersfrom meiduo_admin.models import Userclass UsersSerialize(serializers.ModelSerialize…...
【adb】adb相关命令行及adb传输文件权限问题 remote couldn‘t create file: Read-only file system
adb传输文件权限问题 今天用adb push的时候,报错说并非root权限 remote couldnt create file: Read-only file system 以下是adb相关命令一、非root权限解决方案 1️⃣运行以下命令行 adb root adb remount2️⃣如果还报错,则运行以下命令行 adb disab…...
基于物联网云平台的分布式光伏监控系统的设计与实现
贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要:针对国内光伏发电监控系统的研究现状,文中提出了基于云平台的光伏发电监控体系。构建基于B/S架构的数据实时采集与推送,以SSH(strutsspringhibernate)作为Web开发框架,开发基…...
初识Node.js开发
一、Node.js是什么 1.node.js是什么 官方对Node.js的定义: Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境。 也就是说Node.js基于V8引擎来执行JavaScript的代码,但是不仅仅只有V8引擎: 前面我们知道V8可以嵌入到任何C 应用…...
【Python入门教程】基于OpenCV视频分解成图片+图片组合成视频(视频抽帧组帧)
在人工智能爆火的今天,深度学习被广泛应用于各个领域。深度学习的模型训练离不开大量的样本库。我之前分享过【Python爬虫】批量爬取网页的图片&制作数据集,今天跟大家分享一下如何使用OpenCV库对视频进行抽帧,从而增加样本图片的数量。正…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...
