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

k8s v1.26 实战csi-nfs 部署

一 前言

使用自开发的一键k8s基础环境部署后,存储需要解决,就是测试环境故选择nfs比较简单,翻阅很多网上资料感觉都不是很全面,结合网上资料折腾了一天,总算是完成了csi-nfs部署。其实之前也部署过,经过一段时间就遗忘了,这次决定把完整步骤记录下来,方便以后查阅,同时也方便其他和我一样需要部署csi-nfs的人作为参考。

二 csi-nfs 概念

  csi-nfs 就是为k8s 提供nfs存储实现数据持久化的一套接口插件,我这么理解,网上有很专业的说法,记不住反正。总之就是你想使用nfs作为k8s的数据持久化存储,你就选用csi-nfs 就对了。

三 NFS服务

  既然使用NFS作为存储,那么就需要先搞个NFS服务对吧,找一台机器(centos)安装nfs服务

yum install -y nfs-utils rpcbind
mkdir -p /data/nfs
chmod -R 755 /data/nfs编辑 vim /etc/exports/data/nfs 192.168.3.0/24 (rw,sync,no_root_squash)
保存退出exportfs -ra
exportfs -v启动nfs服务
systemctl start rpcbind
systemctl start nfs-server
设置开机启动nfs服务
systemctl enable rpcbind
systemctl enable nfs-server

以上是nfs服务安装,需要详细安装的请网上查阅,这个nfs服务安装网上资料比较全,不再赘述。

四 k8s环境部署csi-nfs

k8s中部署csi-nfs 是重点,首先需要去csi-nfs 仓库下载相关资料 地址如下

https://github.com/kubernetes-csi/csi-driver-nfs

参考上图直接下载就行了

下载后解压到系统任意目录下。

解压后 目录是csi-driver-nfs-master 

cd 切换到csi-driver-nfs-master 目录下面

由于镜像源都是国外的下载不了,故我们进行一个批量镜像源替换,统一替换到阿里云源就行

使用grep命令查看镜像情况,注:下图是我替换过的。

[root@localhost csi-driver-nfs-master]# grep image deploy/*.yaml
deploy/csi-nfs-controller.yaml:          image: registry.aliyuncs.com/google_containers/csi-provisioner:v5.2.0
deploy/csi-nfs-controller.yaml:          image: registry.aliyuncs.com/google_containers/csi-snapshotter:v8.2.1
deploy/csi-nfs-controller.yaml:          imagePullPolicy: IfNotPresent
deploy/csi-nfs-controller.yaml:          image: registry.aliyuncs.com/google_containers/livenessprobe:v2.15.0
deploy/csi-nfs-controller.yaml:          image: registry.cn-hangzhou.aliyuncs.com/image-storage/nfspluginnfsplugin:v4.6.0
deploy/csi-nfs-controller.yaml:          imagePullPolicy: IfNotPresent
deploy/csi-nfs-node.yaml:          image: registry.aliyuncs.com/google_containers/livenessprobe:v2.15.0
deploy/csi-nfs-node.yaml:          image: registry.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.13.0
deploy/csi-nfs-node.yaml:          image: registry.cn-hangzhou.aliyuncs.com/image-storage/nfspluginnfsplugin:v4.6.0
deploy/csi-nfs-node.yaml:          imagePullPolicy: "IfNotPresent"
deploy/csi-snapshot-controller.yaml:          image: registry.aliyuncs.com/google_containers/snapshot-controller:v8.2.1

我们来看看替换命令

sed -i 's#gcr.io/k8s-staging-sig-storage#registry.aliyuncs.com/google_containers#/g' deploy/*.yaml
sed -i 's#registry.k8s.io/sig-storage#registry.aliyuncs.com/google_containers#g' deploy/*.yaml

注意有个特殊镜像需要单独替换(nfsplug:)这个镜像可以手动修改为下面镜像(切记)

registry.cn-hangzhou.aliyuncs.com/image-storage/nfspluginnfsplugin:v4.6.0

完成镜像地址修改后,就可以执行部署了。

直接执行 ./deploy/install-driver.sh  就等会就部署好了

./deploy/install-driver.sh

部署完成大概如下图样子

一般情况 csi-nfs-controller 容器启动有点问题,可以做如下修改

vim deploy/csi-nfs-controller.yaml (编辑 将csi-resizere 信息删除或者注释)由于csi-resizer 可能启动不了,所以将关于 csi-resizer的信息删除或者注释了,一般不用调整磁盘大小- name: csi-resizerimage: registry.aliyuncs.com/google_containers/csi-resizer:v1.13.2args:- "-csi-address=$(ADDRESS)"- "-v=2"- "-leader-election"- "--leader-election-namespace=$(POD_NAMESPACE)"- '-handle-volume-inuse-error=false'env:- name: ADDRESSvalue: /csi/csi.sock- name: POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespacevolumeMounts:- name: socket-dirmountPath: /csiresources:limits:memory: 200Mi

经过以上修改后 csi-nfs 就部署完成 

五 创建 storageclass 磁盘类

vim storageclass-nfs.yaml  将下面内容直接复制粘贴进去就行

注意修改下 nfs服务器ip及目录信息就行了

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:annotations:storageclass.kubernetes.io/is-default-class: "true"name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:server: 192.168.3.121share: /var/nfs/nano# csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume# csi.storage.k8s.io/provisioner-secret-name: "mount-options"# csi.storage.k8s.io/provisioner-secret-namespace: "default"
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
mountOptions:- nfsvers=4.1

kubectl apply -f storageclass-nfs.yaml 

这就完成了磁盘类创建,后面使用就可以直接调用了。

六 总结

 经过上面步骤一步步完成就完成了csi-nfs 部署,给k8s 对接上了nfs存储了。

好,感谢阅读,欢迎评论区留言反馈问题。

http://www.xdnf.cn/news/5818.html

相关文章:

  • 深度剖析:Vue2 项目兼容第三方库模块格式的终极解决方案
  • 无人机俯视风光摄影Lr调色预设,手机滤镜PS+Lightroom预设下载!
  • MATLAB语音情感识别神经网络方法
  • 中国版 Cursor---腾讯云 CodeBuddy | 从安装VSCode到数独小游戏问世
  • yolo11n-obb训练rknn模型
  • 贪心算法:最小生成树
  • 【Qt】之音视频编程1:QtAV的背景和安装篇
  • 蓝桥杯12届国B 纯质数
  • git Authentication failed for 的解决办法
  • 重构门店网络:从“打补丁“到“造地基“的跨越
  • IDEA查看类结构视图窗口,接口的所有的实现类图
  • Python爬虫常用项
  • Spring @Transactional事务传播机制与MySQL事务原理解析
  • 【日撸 Java 300行】Day 14(栈)
  • 关于IDE的相关知识之二【插件推荐】
  • 基于FPGA的视频接口之千兆网口(七GigE)
  • 多线程爬虫语言选择与实现
  • 青少年编程与数学 02-019 Rust 编程基础 09课题、流程控制
  • 手机相册的 “智能分类” 功能
  • point3d 视野朝向设置
  • 使用交互式半自动化标注工具制作语义分割数据集
  • AI智能分析网关V4助力工厂/工地/车间/能源矿山场景玩手机行为精准检测与安全生产智能化监管
  • 视频编辑软件无限音频、视频、图文轨
  • 电机控制储备知识学习(一) 电机驱动的本质分析以及与磁相关的使用场景
  • vue3与springboot交互-前后分离【完成登陆验证及页面跳转】
  • VTK|类似CloudCompare的比例尺实现1-源码分析
  • 【springcloud学习(dalston.sr1)】项目整体介绍(含源代码)(一)
  • WebGIS 开发黑科技:解锁地理信息的新视界
  • 大模型常用位置编码方式
  • 信息论14:从互信息到信息瓶颈——解锁数据压缩与特征提取的秘密