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

k8s-nfs实现创建sc的两种方式

法一:基于 官方 NFS CSI 插件
法二:基于 nfs-subdir-external-provisioner

法一 官方 NFS CSI 插件

大致步骤


# 安装 NFS
sudo apt update
sudo apt install -y nfs-kernel-server
# 创建共享目录
sudo mkdir -p /data/nfs
sudo chmod 777 /data/nfs
# 配置 NFS 导出
echo "/data/nfs *(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports
# 应用配置
sudo exportfs -rav
# 启动并开机自启
sudo systemctl enable --now nfs-kernel-server
# 验证
showmount -e localhost# 安装nfs csi驱动,可以通过提前将镜像下载到本地
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/deploy/v4.6.0/rbac-csi-nfs.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/deploy/v4.6.0/csi-nfs-driverinfo.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/deploy/v4.6.0/csi-nfs-controller.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/deploy/v4.6.0/csi-nfs-node.yaml#创建sc
cat nfs-sc.yamlapiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:server: 192.168.10.100  #你的nfsshare: /data/nfs
reclaimPolicy: Retain
volumeBindingMode: Immediate# 创建
kubectl apply -f nfs-sc.yaml# 使用pod验证
cat nginx.yamlapiVersion: apps/v1
kind: StatefulSet
metadata:name: web
spec:serviceName: "nginx"replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxports:- containerPort: 80name: webvolumeMounts:- name: wwwmountPath: /usr/share/nginx/htmlvolumeClaimTemplates:- metadata:name: wwwspec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 5GistorageClassName: nfs-csi    # 启动pod
kubectl apply -f nginx.yaml
# 验证
kubectl get pv,pvc,sc,pod

参考:https://blog.csdn.net/weixin_49343462/article/details/121831380

法二 nfs-subdir-external-provisioner

步骤:

git clone https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner.git
cd nfs-subdir-external-provisioner/deploy
root@ubuntu-new:/tmp/nfs-subdir-external-provisioner-master/deploy# ls
class.yaml  deployment.yaml  kustomization.yaml  objects  rbac.yaml  test-claim.yaml  test-pod.yaml# 然后编辑deploy.yamlcontainers:- name: nfs-client-provisioner
#         image: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2image: registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0volumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: k8s-sigs.io/nfs-subdir-external-provisioner  #可以修改value,修改后,需要将class.yaml文件中的provisioner也进行修改- name: NFS_SERVERvalue: 192.168.10.x- name: NFS_PATHvalue: /nfsvolumes:- name: nfs-client-rootnfs:server: 192.168.10.xpath: /nfs# 创建资源
kubectl apply -f rbac.yaml
kubectl apply -f deployment.yaml
kubectl apply -f class.yaml
kubectl apply -f pvc-test.yaml  # 测试文件
# 通过kubectl get pvc 查看是否成功

参考:https://www.bilibili.com/video/BV1MT411x7GH/?spm_id_from=333.788.videopod.episodes&p=67

http://www.dtcms.com/a/321486.html

相关文章:

  • ConcurrentDictionary 详解:.NET 中的线程安全字典
  • 并发编程(五)ThreadLocal
  • 生产环境Tomcat运行一段时间后,如何测试其性能是否满足后续使用
  • Rust语言序列化和反序列化vec<u8>,serde库Serialize, Deserialize,bincode库(2025年最新解决方案详细使用)
  • AI 智能体框架:LlamaIndex
  • 国内如何使用体验到GPT-5呢?附GPT快速升级Plus计划保姆级教程
  • 大模型量化上溢及下溢解析
  • 达梦DMFLDR导出和导入的方法
  • 以任务为中心的智能推荐系统架构设计:原理、实现与挑战分析
  • 深入理解Java集合框架:核心接口、实现类与实战选择
  • Vue2中,Promise.all()调用多个接口的用法
  • Numpy科学计算与数据分析:Numpy文件操作入门之数组数据的读取和保存
  • 智慧社区(十)——声明式日志记录与小区地图功能实现
  • 解决MinIO上传图片后返回URL无法访问的问题
  • Linux 启动流程实战:Device Tree 全解析与驱动绑定机制
  • 【LLM实战】RAG高级
  • 从0到1开发剧本杀小程序:全流程指南与避坑指南
  • 使用 C# 通过 .NET 框架开发应用程序的安装与环境配置
  • 网吧在线选座系统|基于java和小程序的网吧在线选座小程序系统设计与实现(源码+数据库+文档)
  • [202403-E]春日
  • 小程序难调的组件
  • 悬赏任务系统网站兼职赚钱小程序搭建地推抖音视频任务拉新源码功能详解二开
  • LangChain学习笔记05——多模态开发与工具使用
  • react+echarts实现变化趋势缩略图
  • LabVIEW数字抽取滤波
  • 点播服务器
  • RabbitMQ 中无法路由的消息会去到哪里?
  • Spring AMQP 入门与实践:整合 RabbitMQ 构建可靠消息系统
  • Android12 Framework Sim卡pin与puk码解锁
  • 用LaTeX优化FPGA开发:结合符号计算与Vivado工具链(二)