k8s中部署基于nfs的StorageClass
部署nfs服务
1.1 创建基础镜像(选做)
如果以docker的形式部署nfs server, 参考此步骤, 若否, 该步骤可忽略。
mkdir /data/nfs -p
chmod 755 /data/nfs# NFS默认端口: 111、2049、20048
docker run -d \
--privileged \
--name nfs_server \
-p 111:111/tcp \
-p 111:111/udp \
-p 2049:2049/tcp \
-p 2049:2049/udp \
-p 30001-30005:30001-30005/tcp \
-p 30001-30005:30001-30005/udp \
-v /data/nfs:/data/nfs \
centos:centos7.9.2009 /usr/sbin/init # docker exec -it nfs_server bash# =================== 生成镜像并推送到私有仓库 =================== #
docker commit -p -a "langpf" -m "centos7.9.2009, nfs_server" 25c6d01e41b0 rpp-harbor.com/my-project/nfs_server:centos7.9.2009-u$. docker save -o nfs_server-centos7.9.2009-u.tar rpp-harbor.com/my-project/nfs_server:centos7.9.2009-u
$. docker load --input nfs_server-centos7.9.2009-u.tar$. docker push rpp-harbor.com/my-project/nfs_server:centos7.9.2009-u
1.2 部署NFS Server
# step 1(docker部署时执行)
docker exec -it nfs_server bash
chmod 755 /data/nfs# step 2
yum -y install nfs-utils rpcbind
yum install net-tools -y# step 3
$. vi /etc/exports
# 写入
/data/nfs 192.168.1.0/24(rw,sync,all_squash,anonuid=0,anongid=0)
/data/nfs 172.17.0.0/24(rw,sync,root_squash)
# -----
/data/nfs 172.17.0.0/24(rw,sync,root_squash)
/data/nfs 192.168.31.0/24(insecure,fsid=0,rw,sync,no_root_squash,acl)
# 编译生效
$. exportfs -arv# ===================== 修改nfs端口号 ===================== #
# 1. 修改 /etc/sysconfig/nfs 配置
$. vi /etc/sysconfig/nfs
# 在文末加入
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
STATD_OUTGOING_PORT=30005# 2. 修改 /etc/modprobe.d/lockd.conf 配置
$. vi /etc/modprobe.d/lockd.conf
# 在/etc/modprobe.d/lockd.conf中添加以下设置:
options lockd nlm_tcpport=30002
options lockd nlm_udpport=30002# 3. 重新加载NFS配置和服务:
systemctl restart rpcbind
systemctl restart nfs
#systemctl restart nfs-config
#systemctl restart nfs-idmap
#systemctl restart nfs-lock# strep systemctl start rpcbind
systemctl start nfs# step
systemctl status rpcbind
systemctl status nfs
systemctl enable rpcbind
systemctl enable nfs# 4.
exportfs -arv# 校验配置等
showmount -e
showmount -e 192.168.31.133
# -----
showmount -e 192.168.1.161
rpcinfo -p
rpcinfo -p 192.168.1.161
部署nfs客户端
需要在k8s所有节点部署nfs客户端,在k8s所有节点部署执行如下命令, 部署nfs客户端:
# ========================= 客户端 ========================= #
# 普通客户端需要先安装nfs, 执行如下命令
# k8s集群要挂载nfs, 需要在所有节点执行如下命令
yum -y install nfs-utils # =================== 安装后nfs在客户端执行以下命令验证 ================ #
# ----------
showmount -e 172.17.0.2
showmount -e 192.168.31.133
showmount -e 192.168.1.161# -----------
mount -t nfs 172.17.0.2:/data/nfs /data -o proto=tcp -o nolock
mount -t nfs 192.168.31.133:/data/nfs /data2 -o proto=tcp -o nolock
umount /data# -----------
mount -t nfs 192.168.1.161:/data/nfs /data2 -o proto=tcp -o nolock
umount /data2# ===================== 其它命令 ====================== #
# 在服务端执行,查看nfs状态信息
nfsstat -s# 在客户端执行,查看nfs挂载信息
nfsstat -m# 查看服务端的远程共享信息,此命令会调用服务端的20048端口
showmount -e 192.168.202.151# 查看rpcbind注册的所有端口号
rpcinfo -p
rpcinfo -p 192.168.1.161# 在服务端执行,重新挂载/etc/exports中配置
exportfs -r
创建sc,pv,pvc,pod资源
k8s命令行执行如下命令, 创建资源:
kubectl apply -f nfs-sc-pv-pvc-pvc-pod.yaml
nfs-sc-pv-pvc-pvc-pod.yaml文件:
# kubectl config set-context $(kubectl config current-context) --namespace=rpp-nfs-ns
# kubectl config get-contexts
# kubectl get ns# kubectl get pod -n rpp-nfs-ns
# kubectl describe pod rpp-nfs-pod
# kubectl exec -it rpp-nfs-pod -- sh
# kubectl logs rpp-nfs-pod
# kubectl logs -f rpp-nfs-pod # kubectl get pv
# kubectl describe pv rpp-nfs-pv# kubectl get pvc
# kubectl describe pvc rpp-nfs-pvc# kubectl get sc
# kubectl describe sc rpp-nfs-sc
# ns
apiVersion: v1
kind: Namespace
metadata:name: rpp-nfs-ns
---
# 卷插件为NFS的存储类,
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata: name: rpp-nfs-sc# namespace: rpp-nfs-ns # 无ns属性
provisioner: kubernetes.io/nfs
#parameters:
# path: /data/nfs
# server: 192.168.31.133
---
# 创建NFS类型的PV, 并绑定SC
apiVersion: v1
kind: PersistentVolume
metadata: name: rpp-nfs-pv# namespace: rpp-nfs-ns # 无ns属性
spec: capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: rpp-nfs-scvolumeMode: Filesystem nfs: server: 192.168.1.161path: /data/nfs readOnly: false
---
# 创建PVC, 指定StorageClass为rpp-nfs-sc, 并请求1GB的存储空间
apiVersion: v1
kind: PersistentVolumeClaim
metadata: name: rpp-nfs-pvc# namespace: rpp-nfs-ns # 无ns属性
spec:storageClassName: rpp-nfs-scaccessModes:- ReadWriteManyresources:requests:storage: 1Gi
---
# POD挂载PVC
apiVersion: v1
kind: Pod
metadata:name: rpp-nfs-podnamespace: rpp-nfs-ns
spec:containers:- name: springboot-docker2 # 容器名image: rpp-harbor.com/my-project/spring-boot-docker2:0.0.1-SNAPSHOTvolumeMounts:- name: rpp-volumemountPath: /data2ports: # 端口- containerPort: 8600 # 容器暴露的端口name: business-port- containerPort: 8800name: actuator-portvolumes: - name: rpp-volume persistentVolumeClaim: claimName: rpp-nfs-pvc相关文章:
k8s中部署基于nfs的StorageClass
部署nfs服务 1.1 创建基础镜像(选做) 如果以docker的形式部署nfs server, 参考此步骤, 若否, 该步骤可忽略。 mkdir /data/nfs -p chmod 755 /data/nfs# NFS默认端口: 111、2049、20048 docker run -d \ --privileged \ --name nfs_server \ -p 111:111/tcp \ -p 111:111/ud…...
c语言一维数组总结详解
目录 介绍: 一维整型数组: 声明: 初始化: 打印输出: 输出结果: 浮点型数组: 代码: 运行结果: 补充: 一维字符数组: 字符数组声明及初始…...
Redis 持久化 —— 超详细操作演示!
四、Redis 持久化 四、Redis 持久化4.1 持久化基本原理4.2 RDB持久化4.3 AOF持久化4.4 RDB与AOF对比4.5 持久化技术转型 五、Redis 主从集群六、Redis 分布式系统七、Redis 缓存八、Lua脚本详解九、分布式锁 数据库系列文章: 关系型数据库: MySQL —— 基础语法大全…...
使用Java实现桶排序算法
文章目录 桶排序算法 今天来看看桶排序算法: 桶排序算法 (1)基本思想:把数组 arr 划分为 n 个大小相同子区间(桶),每个子区间各自排序,最后合并 。计数排序是桶排序的一种特殊情况…...
5.题目:编号1624 小蓝吃糖果
题目: ### 这道题主要考察poriority_queue优先队列 #include<bits/stdc.h> using lllong long; using namespace std; int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n;cin>>n;priority_queue<int> pq;ll sum0,x;for(int i1;i<n;i){c…...
基于SpringBoot+thymeleaf协同过滤算法山河旅游推荐系统(Java毕业设计)
大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…...
TypeScript 之 console的使用
语言: TypeScript 在线工具: PlayGround console console 对象是一个非常强大的控制台日志显示工具, 可以帮助我们在浏览器中调试代码。 注: console不属于TypeScript的语法,而是由JavaScript封装的内置对象。 简单的…...
西南科技大学C++程序设计实验十(函数模板与类模板)
一、实验目的 1. 掌握函数模板与类模板; 2. 掌握数组类、链表类等线性群体数据类型定义与使用; 二、实验任务 1. 分析完善以下程序,理解模板类的使用: (1)补充类模板声明语句。 (2)创建不同类型的类对象,使用时明确其数据类型? _template<typename T>__…...
Python 解析JSON实现主机管理
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的文本形式表示数据。JSON 是一种独立于编程语言的数据格式,因此在不同的编程语言中都有对应的解析器和生成器。JSON 格式的设计目标是易于理解、…...
一体化污水处理设备材质怎么选
在环保意识日益增强的今天,污水处理设备成为城市建设过程中的重要环节。而选择合适的一体化污水处理设备材质,则成为了一项重要的决策。本文将从专业的角度出发,为您解析一体化污水处理设备材质的选取。 首先,一体化污水处理设备材…...
德国进口高速主轴电机在机器人上的应用及选型方案
随着机器人技术的日新月异,高速主轴电机在机器人领域的应用也日趋广泛。德国进口的SycoTec高速主轴电机,以其高转速、高精度、高刚度的特点,在机器人的切割、铣削、钻孔、去毛刺等加工应用中发挥着关键作用。 一、高速主轴电机的特点 SycoT…...
【软考中级——软件设计师】备战经验 笔记总结分享
考试成绩 我第一次备考是在2022 然后那时候取消了这次是第二次 靠前我一个月复习的看了以前的笔记 然后刷了七八道历年题目学习资料推荐 :zst——2021 b站链接自荐一下我的笔记 : 软考笔记专栏 视频确实很长 , 我的建议就是先看笔记 然后不会…...
146. LRU 缓存 --力扣 --JAVA
题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回…...
【C++】POCO学习总结(十):Poco::Util::Application(应用程序框架)
【C】郭老二博文之:C目录 1、Poco::Util::Application 应用框架 1.1 应用程序基本功能 Poco::Util::Application是POCO实现的的应用程序框架,支持功能如下: 命令行参数处理配置文件初始化和关机日志 1.2 命令行程序和守护进程 POCO支持…...
探索医学影像:如何通过ROI灰度直方图和ROI区域方格图揭示隐秘细节?
一、引言 医学影像是现代医学诊断的重要手段,其中nrrd文件格式作为一种常见的医学影像数据存储方式,被广泛应用于各种医学影像设备和软件中。这种文件格式具有丰富的元数据信息,可以精确记录影像的空间位置、方向和尺度等信息,对于…...
SASS基本语法总结
SASS是CSS预处理器,简单来说,SASS是比CSS更高一级的语言,它拥有CSS不具备的语法,比如if条件控制 SASS的预处理器 SASS是一种无法被浏览器直接执行的语言,我们需要通过预处理工具(可以理解为翻译工具&…...
【C++】简单工厂模式
2023年12月6日,周三下午 今天又学习了一次简单工厂模式 每多学习一次,都会加深对设计模式的理解 目录 什么是简单工厂模式简单工厂模式的优缺点举例说明 什么是简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种创建型…...
el-tree数据量过大,造成浏览器卡死、崩溃
el-tree数据量过大,造成浏览器卡死、崩溃 场景:树形结构展示,数据超级多,超过万条,每次打开都会崩溃 我这里采用的是引入新的插件虚拟树,它是参照element-plus 中TreeV2改造vue2.x版本虚拟化树形控件&…...
2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-A
2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-A 目录 2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-A 需要环境或者解析可以私信 (二)A 模块基础设施设置/安全加固(200 分&…...
面向LLM的App架构——业务维度
这是两篇面向LLM的大前端架构的第一篇,主要写我对LLM业务的认知以及由此推演出的大前端架构。由于我是客户端出身,所以主要以客户端角度来描述,并不影响对前端的适用性。 对LLM的认知 基于Google对AGI的论文,AGI或者LLM一定会朝…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
