k8s使用NFS存储数据

k8s数据持久化之NFS 目录 NFS 部署nfs 测试 k8s中使用nfs示例 测试数据共享 测试数据持久化 NFS NFS是主流的k8s数据持久化解决方案与pod共享存储解决方案 NFS数据卷:提供对NFS挂载支持,可以自动将NFS共享路径挂载到Pod中 NFS:是一个主流的文件共享服务器 部署nfs 1、实施nfs(所有节点) yum install nfs-utils -y 2、选择一台nfs-utils服务器作为数据节点,并进行配置 修改nfs服务器配置 阅读详情

1 安装NFS

NFS(Network File System,网络文件系统)是一个共享文件系统。

# 参见以下博客
https://blog.youkuaiyun.com/make_progress/article/details/124295978

在master节点上创建目录

# 创建目录
sudo mkdir -p /data/nfsdata

# 添加权限
shdo chmod 777 /data/nfsdata

编辑" /etc/exports"文件

# 编辑文件
sudo vim /etc/exports

# 添加以下内容
/data/nfsdata  192.168.108.0/24(rw,sync,no_subtree_check)

# 重启服务
sudo service nfs-kernel-server restart

# 查看共享目录
sudo showmount -e 192.168.108.100
# 返回值如下,表示创建成功
Export list for 192.168.108.100:
/data/nfsdata 192.168.108.0/24

2 使用NFS实现持久化

(1)创建"python-deployment-for-nfs.yaml"文件

# python-deployment-for-nfs.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: python-deployment-for-nfs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: python-for-nfs-pod
  template:
    metadata:
      labels:
        app: python-for-nfs-pod
    spec:
      containers:
        - name: python-nfs
          image: python:3.8.2
          imagePullPolicy: IfNotPresent
          command: ['/bin/bash', '-c', '--']
          # 启动"python -m http.server 80"服务,“>>”表示向文件中追加数据
          args: ['echo "<p> The host is $(hostname) </p>" >> /containerdata/podinfor; python -m http.server 80']
          # 设置80端口
          ports:
            - name: http
              containerPort: 80
          # 设置挂载点
          volumeMounts:
            # 此处的名称与nfs有对应关系
            - name: python-nfs-data
              mountPath: /containerdata

      # 配置nfs存储卷
      volumes:
        # 此处的名称需与spec.containers.volumeMounts.name相同
        - name: python-nfs-data
          nfs:
            path: /data/nfsdata
            # NFS服务器节点
            server: 192.168.108.100

(2)执行文件

kubectl apply -f python-deployment-for-nfs.yaml 

(3)查看结果

# 查看192.168.108.100节点文件
more /data/nfsdata/podinfor

# 返回值
<p> The host is python-deployment-for-nfs-67c4c4f855-n9jlz </p>
<p> The host is python-deployment-for-nfs-67c4c4f855-pr8jr </p>
<p> The host is python-deployment-for-nfs-67c4c4f855-vspm8 </p>

3 使用PV和PVC实现持久化

PV(PersistentVolume)表示持久存储卷;PVC(PersistentVolumeClaim)表示持久化存储卷申请。

3.1 创建PV

(1)创建python-pv.yaml文件

# python-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: python-pv
spec:
  # 设置容量
  capacity:
    storage: 1Gi

  # 设置资源的访问策略,访问策略有ReadOnlyMany,ReadWriteOnce,ReadWriteMany
  # ReadOnlyMany表示该卷可以被多个节点以只读模式挂载;
  # ReadWriteOnce表示该卷可以被单个节点以读写模式挂载;
  # ReadWriteMany表示该卷可以被多个节点以读写模式挂载;
  accessModes:
    - ReadWriteMany

  # PV资源的回收策略,回收策略有Retain(保留)、Recycle(自动回收)、Delete(自动删除)
  persistentVolumeReclaimPolicy: Recycle

  # 设置资源的class名称
  # 注意,后面PVC申请资源需要用到此处的名称
  storageClassName: pythonpv

  # 设置NFS对应的挂载点
  nfs:
    path: /data/nfsdata
    # NFS服务器节点
    server: 192.168.108.100

(2)执行python-pv.yaml文件

kubectl apply -f python-pv.yaml

(3)查看PV

# 查看pv
kubectl get pv

# 返回值
NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
python-pv   1Gi        RWX            Recycle          Available           pythonpv                59s

3.2 创建PVC

(1)创建python-pvc.yaml文件

# python-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  # 注意,后面Deployment申请资源需要用到此处的名称
  name: python-pvc
spec:
  # 设置资源的访问策略,访问策略有ReadOnlyMany,ReadWriteOnce,ReadWriteMany
  # ReadOnlyMany表示该卷可以被多个节点以只读模式挂载;
  # ReadWriteOnce表示该卷可以被单个节点以读写模式挂载;
  # ReadWriteMany表示该卷可以被多个节点以读写模式挂载;
  accessModes:
    - ReadWriteMany

  # 设置资源的class名称
  # 注意,此处的名称必须与PV中的storageClassName相同
  storageClassName: pythonpv

  # 设置申请的资源大小
  resources:
    requests:
      storage: 100Mi

(2)执行文件

kubectl apply -f python-pvc.yaml

(3)查看PVC

# 查看PVC
kubectl get pvc

# 返回值
NAME         STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
python-pvc   Bound    python-pv   1Gi        RWX            pythonpv       20s

3.3 创建Deployment

(1)创建“python-deployment.yaml”文件

# python-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: python-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: python-pv
  template:
    metadata:
      labels:
        app: python-pv
    spec:
      containers:
        - name: python-pv
          image: python:3.8.2
          imagePullPolicy: IfNotPresent
          command: ['/bin/bash', '-c', '--']
          # 启动"python -m http.server 80"服务,“>>”表示向文件中追加数据
          args: ['echo "<p> The host is $(hostname) </p>" >> /containerdata/podinfor; python -m http.server 80']
          # 设置80端口
          ports:
            - name: http
              containerPort: 80
          # 设置挂载点
          volumeMounts:
            # 此处的名称与nfs有对应关系
            - name: python-nfs-data
              mountPath: /containerdata

      # 配置nfs存储卷
      volumes:
        # 此处的名称需与spec.containers.volumeMounts.name相同
        - name: python-nfs-data
          # 向PVC申请资源,此处的名称对应python-pvc.yaml文件中的metadata.name
          persistentVolumeClaim:
            claimName: python-pvc

(2)执行文件

kubectl apply -f python-deployment.yaml

(3)查看结果

# 查看podinfo
more /data/nfsdata/podinfor

# 返回结果如下
<p> The host is python-deployment-for-nfs-67c4c4f855-n9jlz </p>
<p> The host is python-deployment-for-nfs-67c4c4f855-pr8jr </p>
<p> The host is python-deployment-for-nfs-67c4c4f855-vspm8 </p>
# 表明追加成功
<p> The host is python-deployment-64fb987f94-dsdnk </p>
<p> The host is python-deployment-64fb987f94-fmb99 </p>
<p> The host is python-deployment-64fb987f94-84bvs </p>

4 使用LPV实现持久化

本地存储有emptyDir和hostPath两种,此外,持久存储卷(PV,Persistent Volume)中本地持久化存储卷(LPV,Local Persistent Volume)的作用是把数据存储在Pod运行的宿主机上。LPV通过声明亲和节点,Pod会被调度存在PV的节点上。此外,通过设置存储类(StorageClass)中的volumeBindingMode: WaitForFirstConsumer属性延迟绑定PV和PVC,进而根据PV的分布调度Pod,最后根据评综合评估绑定PV和PVC,实现PV的动态绑定。

(1)创建lpv-sc.yaml文件

创建StorageClass

# lpv-sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  # 存储类名称
  name: lpv-storage-class

# 存储分配器
provisioner: kubernetes.io/no-provisioner

# 设置延迟绑定
volumeBindingMode: WaitForFirstConsumer

(2)创建 lpv.yaml文件

创建PV

# lpv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: lpv-1
  labels:
    name: lpv-1
spec:
  # 申请容量
  capacity:
    storage: 1Gi

  # 设置访问策略
  accessModes:
    # 单节点可读写
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain

  # 注意,此处需要与lpv-sc.yaml中的metadata.name相同
  storageClassName: lpv-storage-class

  # 节点的存储位置
  local:
    path: /data/es

  # 设置亲和节点,Affinity表示密切关系
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/hostname
            operator: In

            # 亲和节点名称
            values:
              - master

k8s之挂载NFS到POD中 NFS全称network file system,是一种允许我们像使用本地磁盘一样,使用远端某机器的磁盘的一种技术,采用cs架构,所以其本质上可以看做是一种数据存储解决方案。 阅读详情

相关推荐

k8s中的PVC为何需要延迟绑定?(WaitForFirstConsumer)

WaitForFirstConsumer其实就是告诉volume控制器,虽然找到了适合的pv, 但。

MyySophia的博客 3564

搭建NFS服务器,部署k8s集群,并在k8s中使用NFS作为持久化储存

本文旨在探讨如何搭建NFS服务器,并将其集成到Kubernetes(K8s)集群中作为持久化存储的解决方案。我们将首先介绍NFS的基本原理和优势,随后详细阐述NFS服务器的搭建过程,包括安装NFS软件包、配置NFS共享目录以及启动NFS服务。接着,我们将探讨如何安装k8s集群并在K8s中部署NFS客户端。

博客虽小,世界尽在其中 9282

从零构建K8s集群与NFS持久化存储:实战部署与数据验证

本文详细介绍了从零开始构建Kubernetes集群并配置NFS持久化存储的完整流程。通过分步指导,包括环境准备、NFS服务器搭建、K8s集群部署以及数据持久化验证,帮助开发者实现高可用的容器化应用部署。重点讲解了NFS在K8s中的持久化存储配置,确保数据安全性和可靠性。

weixin_29211309的博客 318

史上最全之K8s使用nfs作为存储卷的五种方式

文章目录史上最全之K8s使用nfs作为存储卷的五种方式在`deployment/statefulset`中直接使用创建类型为nfs的持久化存储卷NFS CSI Driver安装使用pv/pvc 使用(静态配置)存储类使用(动态配置)NFS Subdir External Provisioner安装创建存储类验证集群模式nfs-ganesha-server-and-external-provisioner安装使用集群模式总结 史上最全之K8s使用nfs作为存储卷的五种方式 我们能将 NFS (网络文件系统)

琦彦 1万+

Kubernetes(k8s) po 配置持久化挂载(nfs)

本文介绍了在Kubernetes中使用NFS实现持久化存储的配置方法。主要内容包括:NFS作为共享存储的作用,解决Pod数据丢失问题;配置思路着重于NFS目录权限处理,提供777、基于用户组ID和指定容器用户ID三种方案;并详细展示了创建PV、PVC及挂载到Pod的具体yaml配置示例。文章建议开发环境可用777权限,生产环境应采用更安全的用户组或指定UID方式,同时提供了快速验证部署状态的命令。该方案实现了计算与存储解耦,确保数据持久化和多Pod共享访问。

杨杨杨~~的博客 1516

Kubernetes集群NFS的数据存储类型(三十四)

4.NFS存储类型 1.Kubernetes集群NFS的数据存储类型 HostPath可以解决数据持久化问题,但是当Node节点故障时,Pod会被调度在其他节点,这样就会造成数据的不完整,此时就需要准备单独的网络存储系统,比较常用的有NFS、CIFS、GFS、CEPH NFS是一个网络文件存储一台,可以准备一台NFS服务器,将存储路径挂到nfs上,这样一来pod产生的数据都会存储到NFS上,不管pod如何调度,只要Node节点和NFS连接没有问题,数据就不会异常 如果使用了nfs或者后面的pv、pvc进行存

江晓龙的博客 1371

k8s使用nfs存储数据

一般k8s的数据都会存放于远程存储服务器上来保证安全,采用的方式也有很多,如nfs,ceph等等多种,这里我们介绍nfs存储。nfs存储配置简单,但存是储量特别大,传输特别频繁的情况下难免会出现传输延迟,难以保证高并发时的数据完整性和高性能等问题,但是很多公司的基本要求还是可以满足的 kubernetes使用NFS共享存储有两种方式: 1.手动方式静态创建所需要的PV和PVC。 2.通过创建PVC...

qq_38026977的博客 6633

别再只用相机标定了!手把手教你用OpenCV和Python搞定投影仪标定(附完整代码)

本文详细介绍了如何使用Python和OpenCV实现投影仪标定,特别针对结构光三维扫描中的核心问题。通过低成本替代方案和优化算法,解决投影仪标定中的非线性畸变和亮度-距离耦合效应,显著提升三维重建精度。附完整代码和实战技巧,帮助开发者快速掌握关键技术。

weixin_29274337的博客 542

nfs存储 mysql库_k8s使用nfs持久存储mysql数据的一次踩坑

准备首先确保nfs服务端搭建成功。由于资源限制,我们的nfs服务器和k8s集群不在同一局域网内,所以k8s中pv使用公网ip连接nfs,且nfs服务器的带宽为10M。创建nfs pvapiVersion: v1kind: PersistentVolumemetadata:name: mysql-nfsspec:capacity:storage: 10GiaccessModes:- ReadWrit...

weixin_30479921的博客 775

格拉姆角场(GAF)实战:用Python实现时间序列图像化处理

本文深入解析了格拉姆角场(GAF)技术,这是一种将一维时间序列转化为二维图像特征的方法,以便利用卷积神经网络(CNN)等图像模型进行深度分析。文章通过Python实战代码,详细演示了GASF和GADF两种核心转换的实现过程,并探讨了其在时序数据分类任务中的应用,为故障预警、金融模式识别等场景提供了强大的图像驱动分析视角。

weixin_29079671的博客 273

ChatGPT Windows桌面版:从安全下载到高效配置的全流程指南

WebView封装技术是将网页应用转化为独立桌面程序的核心方法,它通过嵌入浏览器内核实现跨平台功能复用。其原理在于利用Electron或Tauri等框架,将Web内容打包进原生应用外壳,同时注入系统级API调用能力。这项技术的工程价值在于显著提升了Web应用的系统集成度和用户体验,使其能够支持全局快捷键、独立进程和本地数据存储等原生特性。在AI助手深度集成工作流的应用场景中,这种封装模式解决了浏览器多标签页切换繁琐、会话管理不便等痛点。本文以ChatGPT桌面客户端为例,详细解析了基于开源项目的安全下载路径

weixin_30437847的博客 484

K8S数据存储(基本存储之 EmptyDir、HostPath、NFS )

容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了Volume的概念。 Volume是Pod中能够被多个容器访问的共享目录,它被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下,kubernetes通过Volume实现同一个Pod中不同容器之间的数据共享以及数据的持久化存储。 Volume的生命容器不与Pod中单个容器的生命周期相关,·。 kube

weixin_45880055的博客 1670

【RViz2】导入urdf模型时报错:Could not load resource xxx,Unable to open file xxx,Error retrieving file xxx

初学ROS2,想要在RViz2中显示urdf模型。其中.urdf文件引用了外部的meshes文件夹。

qq_43557907的博客 9488

k8s nfs 数据持久化存储

3、在nfs服务器上启动nfs服务器(有 /etc/exports配置的那一台)如果容器一直报错没创建可以使用查看报错信息 可能是nfs路径没有成功暴露出来。进入挂载的路径 发现里面是没东西 因为挂载的地方也没有东西。/data/nfs表示路径 (一定要有这个路径)4、在k8s集群部署应用使用nfs持久网络存储。可以使用不是节点的作为nfs服务器。创建nfs-nginx.yaml。到nfs服务器 进入挂载路径。在容器中就可以看到创建的文件。1、所有节点安装nfs工具。nfs为什么要持久化。

weixin_43205308的博客 272

LAMMPS实操系列(四): 高熵合金FCC-CoCrCuFeNi的退火模拟

我们对FCC-CoCrCuFeNi的退火模拟思路主要是,首先将材料以均匀的速率用100 ps从300 K升温至1000 K,然后在1000 K的温度下平衡100 ps,随后以均匀的速率用100 ps从1000 K降温至300 K,随后通过共轭梯度下降法做静力学结构优化得到退火后的结构。由于FCC-CoCrCuFeNi高熵合金被认为是潜在的工程结构材料[1],接下来我们将对退火前后的结构进行压缩模拟,对比退火前后FCC-CoCrCuFeNi高熵合金的力学性能变化,敬请各位读者关注我们的更新。

Ceshigo_CD的博客 4837

【基础演练】Playwright 极简复习:作为 AI-RPA 底座的 Playwright 核心用法

摘要: 2026年,Playwright已从测试工具升级为AI-RPA标准执行底座,周下载量超3300万,被browser-use等AI Agent项目广泛采用。其核心架构通过Playwright Server实现多浏览器协议适配,支持远程连接与高并发隔离(BrowserContext)。自动等待机制显著提升稳定性,但高频交互场景可能需直接使用CDP协议。Playwright凭借跨浏览器兼容性、轻量级隔离和微软官方支持,成为测试、RPA和AI Agent领域的事实标准,未来将主导对话式自动化市场。

ZDQ58818的博客 237

Kubernetes(k8s)的Volume数据存储介绍和各种基本储存类型(EmptyDir、HostPath、NFS)的使用

目录1. 概述2. EmptyDir2.1 概述2.2 EmptyDir使用实战2.2.1 创建pod2.2.2 查看pod2.2.3 访问Pod中的Nginx:2.3.4 查看busybox容器的标准输出3. HostPath3.1 概述3.2 HostPath使用实战3.2.1 创建pod3.2.2 查看pod3.2.3 访问Pod中的Nginx:3.3.4 查看Pod所在node节点的日志4. NFS4.1 概述4.2 搭建NFS服务器4.3 NFS使用实战4.3.1 创建pod4.3.2 查看pod

Bulut0907 2407

华为od 面试八股文_C++_04_含答案

华为od 面试八股文_C++_04_含答案

MISAYAONE的博客 2473

k8s mysql数据目录挂载_Kubernetes 1.14.1 使用 NFS-Client-Provisioner 调用 NFS Server 静态和动态配置 Mysql 持久化存储...

目录[toc]1、将 MySql 的配置文件做为资源挂载到 Kubernetes1.1、将 My.ini 挂载到 Configmap1.2、将 MySql 的密码以 Secret 格式保存2、持久化静态资源的挂载2.1、创建 PersistentVolume2.2、创建 PersistentVolumeClaim2.3、创建 MySql 连接 PVC2.4、连接 Mysql 进行测试3、持久化...

weixin_42306699的博客 725

OpenClaw进阶实战(二十五):抖音企业号——私信回复与视频评论分析

摘要:本文介绍抖音企业号自动化运营方案,突破抖音强风控体系的技术挑战。针对内容生产、私信互动和账号矩阵三大场景,提出混合架构解决方案: 私信自动化:结合关键词触发与随机延迟(45秒±15),实现拟人化回复,支持价格咨询/商务合作等高优先级消息识别 混合技术栈:官方API(合规)+真机RPA(覆盖长尾需求)+AI辅助生成(脚本→剪辑→发布闭环) 安全策略:通过设备指纹模拟、行为间隔随机化和内容差异化处理规避风控,提供每日200条的安全操作阈值。配套OpenClaw技能实现一键部署,包含cookie配置、回复规

PeterPan的博客 144

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

告别数据丢失:Kubernetes 中的 NFS PVC 持久化存储

k8s使用nfs

u013901725的博客 410

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Kubernetes持久化存储

emptydir,是本地存储,pod重启,数据就不存在了,需要对数据持久化存储对于数据持久化存储【pod重启,数据还存在】,有两种方式。

weixin_72525373的博客 1236

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Kubernetes部署NFS PV数据持久化存储

准备 所有k8s节点需要安装nfs服务 一台nfs服务器提供存储 根据需求创建数据共享目录 image.png 配置对所有k8s节点的 授权 检查是否已经授权 showmount -e 192.168.100.204 image.png 之后不需要挂载,直接开始使用nfs的存储创建PV和PVC。 PersistentVolume(PV)是指由集群管理员配置提供的某存储系统上的段存储空间,它是对底层共享存储的抽象,将共享存储作为种可由用户申请使的资源,实现了“存储消费”机制。

m0_67505608的博客 577

用NFS存储挂载Kubernetes(K8S)容器中的文件

Kubernetes通过Volume实现容器数据持久化,NFS是常用解决方案,本文详细介绍了在K8S集群中配置NFS存储的步骤

CLASSXY的博客 671

(三十四)Kubernetes集群NFS的数据存储类型

NFS是一个网络文件存储一台,可以准备一台NFS服务器,将存储路径挂到nfs上,这样一来pod产生的数据都会存储到NFS上,不管pod如何调度,只要Node节点和NFS连接没有问题,数据就不会异常。节点故障时,Pod会被调度在其他节点,这样就会造成数据的不完整,此时就需要准备单独的网络存储系统,比较常用的有NFS、CIFS、GFS、CEPH。如果使用了nfs或者后面的pv、pvc进行存储,那么容器原来本身的数据将会丢失,因为这些存储卷都是以挂载的形式挂到容器里,因此旧数据将会被覆盖。

11 666

K8S使用NFS动态创建PVC

简介 K8S中容器的数据的持久化对于有状态的应用是很重要的,考虑到横向扩展,所以一般都会使用网络存储来作为持久化的介质。NFS(有的叫NAS)就是经常使用的一种。本文介绍两种使用NFS作为后端存储,动态创建PVC的方法。两种方法我在产线环境都验证过。 第一种: nfs-client-provisioner (较老) 第二种: csi-nfs-driver (较新) 准备 Kubernetes : 1.17.6 实施 nfs-client-provisioner 1. 部...

少说多做 5147
上一篇: k8s(v18.6)安装Dashboard
下一篇: K8s中创建NFS存储分配器和StorageClass
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值