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

在K8s中部署动态nfs存储provisioner

背景

之前,我已经在一台worker node上安装了local lvm 的provisioner来模拟需要本地高IOPS的数据库等stafeful应用的实现。
为了后续给虚拟机里的K8s集群安装可用的metrics和logs监控系统(metrics和logs的时序数据库需要永久存储),特为K8s 集群提供基于nfs的文件服务器一台,并安装nfs provisioner, 以便实现动态分配nfs volume给pods使用的目的。

实现一套nfs server/client 系统

Step1 nfs server installation

Target :File server
IP: 192.168.80.223
NFS folder:/mnt/nfs_share

   # 安装nfs server
   25  sudo apt install -y nfs-kernel-server 
   #创建目录
   26  sudo mkdir -p /mnt/nfs_share  
   27  sudo chmod 777 /mnt/nfs_share 
   28  sudo vim /etc/exports 
   #添加一行  /mnt/nfs_share *(rw,sync,no_root_squash,no_subtree_check)
   30  sudo exportfs -ra
   # 重启nfs服务
   33  sudo systemctl restart nfs-server
    # 确保开机自启动
   34  sudo systemctl enable nfs-server 

Step2 nfs-clients installation

Target :K8s worker nodes
NFS folder:/mnt/nfs_client

  157  sudo apt install -y nfs-common
  158  sudo mkdir -p /mnt/nfs_client
  159  sudo mount -t nfs 192.168.80.223:/mnt/nfs_share /mnt/nfs_client
  160  vim /etc/fstab
#添加一行 192.168.80.223:/mnt/nfs_share  /mnt/nfs_client  nfs  defaults  0  0

实现nfs provisioner

step1 installing

Target:K8s cp(master) node

#通过Helm 添加nfs provisioner,先添加相应chart的repo
  564  helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/ 
  565  helm repo update
   # 安装nfs provisioner,我忘记将这个nfs provisioner需要的controller等资源单独放一个namespace了。
  566  helm install nfs-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner   \
  --set nfs.server=192.168.80.223  \
  --set nfs.path=/mnt/nfs_share

step2 验证

# sc是cluster wide的资源,所以不用-n 指定namespace
root@master:/opt/k8sconfig$sudo kubectl get sc 
NAME                  PROVISIONER                                                     RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
nfs-client            cluster.local/nfs-provisioner-nfs-subdir-external-provisioner   Delete          Immediate              true                   36m
topolvm-provisioner   topolvm.io                                                      Delete          WaitForFirstConsumer   true                   5d19h
# 查看controller的pod 是否在运行
root@master:/opt/k8sconfig$sudo kubectl get pods 
NAME                                                              READY   STATUS             RESTARTS   AGE
nfs-provisioner-nfs-subdir-external-provisioner-5796dc5fcfq6k2c   1/1     Running            0          36m

http://www.kler.cn/a/526138.html

相关文章:

  • Redis --- 分布式锁的使用
  • 生成模型:扩散模型(DDPM, DDIM, 条件生成)
  • 2025 = 1^3 + 2^3 + 3^3 + 4^3 + 5^3 + 6^3 + 7^3 + 8^3 + 9^3
  • 分布式微服务系统架构第88集:kafka集群
  • 新年快乐!给大家带来了一份 python 烟花代码!
  • 蓝桥杯例题四
  • 基于 Redis GEO 实现条件分页查询用户附近的场馆列表
  • React第二十八章(css modules)
  • 在彼此的根系里呼吸
  • OpenEuler学习笔记(十七):OpenEuler搭建Redis高可用生产环境
  • V103开发笔记1-20250113
  • 类文件结构
  • Baklib如何提升企业知识管理效率与市场竞争力的五大对比分析
  • FFmpeg rtmp推流直播
  • 道氏理论简介
  • Baklib深入解析企业内容管理与内容中台的本质差异
  • P1044 [NOIP2003 普及组] 栈 C语言
  • Autogen_core: ClosureAgent使用与测试
  • selenium定位网页元素
  • 如何使用深度学习中的 Transformer 算法进行视频目标检测
  • C基础寒假练习(4)
  • 【Rust自学】17.3. 实现面向对象的设计模式
  • MSU:通过图结构增强LLM推理
  • Vue3的el-table-column下拉输入实时查询API数据选择的实现方法
  • 力扣【1049. 最后一块石头的重量 II】Java题解(背包问题)
  • Windows程序设计8:获取文件大小的两种方式