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

在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 server25  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-common158  sudo mkdir -p /mnt/nfs_client159  sudo mount -t nfs 192.168.80.223:/mnt/nfs_share /mnt/nfs_client160  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的repo564  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.lryc.cn/news/529470.html

相关文章:

  • 家庭财务管理系统的设计与实现
  • 数据结构-Stack和栈
  • 使用vhd虚拟磁盘安装两个win10系统
  • 代码随想录34 动态规划
  • 【2025年最新版】Java JDK安装、环境配置教程 (图文非常详细)
  • Shell特殊状态变量以及常用内置变量总结
  • 【4Day创客实践入门教程】Day4 迈向高手之路——进一步学习!
  • EtherCAT-快速搭建
  • 【设计测试用例自动化测试性能测试 实战篇】
  • DBeaver连接MySQL提示Access denied for user ‘‘@‘ip‘ (using password: YES)的解决方法
  • 【MySQL — 数据库增删改查操作】深入解析MySQL的 Update 和 Delete 操作
  • 04树 + 堆 + 优先队列 + 图(D1_树(D1_基本介绍))
  • 【Proteus仿真】【51单片机】多功能计算器系统设计
  • Solon Cloud Gateway 开发:Route 的配置与注册方式
  • jstat命令详解
  • [Collection与数据结构] B树与B+树
  • Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南:让Docker拥抱GPU
  • 17.Word:李楠-学术期刊❗【29】
  • 图漾相机——C++语言属性设置
  • 【性能优化专题系列】利用CompletableFuture优化多接口调用场景下的性能
  • docker安装emqx
  • DeepSeek超越ChatGPT的能力及部分核心原理
  • Leetcode 3434. Maximum Frequency After Subarray Operation
  • 《DeepSeek-R1 问世,智能搜索领域迎来新变革》
  • GEE | 植被总初级生产力GPP的时间变化特征
  • 安卓(android)饭堂广播【Android移动开发基础案例教程(第2版)黑马程序员】
  • 本地部署DeepSeek
  • 赛博算卦之周易六十四卦JAVA实现:六幺算尽天下事,梅花化解天下苦。
  • Hive:窗口函数(1)
  • docker安装nacos2.2.4详解(含:nacos容器启动参数、环境变量、常见问题整理)