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

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

文章目录

  • 前言
    • k8s po 配置持久化挂载(nfs)
      • 1. 相关概念
        • 1.1. 用处
        • 1.2. 为什么需要持久化挂载?
        • 1.3. NFS 在 K8s 里的作用
        • 1.4. 架构图
      • 2. 配置思路
        • 2.1. 目录权限处理的几种方式
          • 2.1.1. 直接赋予 777
          • 2.1.2. 基于用户组 ID 配置
          • 2.1.3. 直接指定容器用户 ID
        • 2.2. 总结
      • 3. k8s 设置挂载
        • 3.1. 建立pv
        • 3.1. 建立pvc
        • 3.3. 快速验证
        • 3.4. po 配置加NFS挂载

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


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

1. 相关概念

1.1. 用处

在 Kubernetes 中使用 NFS 网络文件系统 来做 持久化存储卷 (PersistentVolume, PV) 和 持久化存储声明 (PersistentVolumeClaim, PVC),从而让 Pod 的数据在重启或调度到其他节点时依然能保留。

1.2. 为什么需要持久化挂载?
  • Pod 本地存储是临时的:Pod 删除/重建时,容器里的数据会丢失。
  • 需要共享数据:多个 Pod 要访问同一份文件(日志、配置、上传文件等)。
  • 解耦计算和存储:应用无状态化,存储独立出来。
1.3. NFS 在 K8s 里的作用

NFS(Network File System)是一种 跨节点共享目录 的协议。
在 K8s 中,使用 NFS 相当于为集群里的所有节点提供了一个统一的共享目录:

  • 多个 Pod 可以同时挂载该目录,做到 数据共享;
  • Pod 重启或迁移后,数据依然 持久保存。
1.4. 架构图
 (K8s Pod ↔ PVC ↔ PV ↔ NFS 服务器)

2. 配置思路

部署细节此处略,可以参考官方文档或安装教程)
关键在于 NFS 共享目录权限 的处理。因为容器里的应用用户 ID 和宿主机用户 ID 可能不一致,容易导致没有写权限。

2.1. 目录权限处理的几种方式
2.1.1. 直接赋予 777

对要共享的目录(例如 /data/nfs/app)设置:

chmod -R 777 /data/nfs/app

优点:简单粗暴,保证任何容器都能读写。
缺点:权限过大,存在安全风险。

2.1.2. 基于用户组 ID 配置

查询需要挂载的 Pod 内部运行用户的 UID/GID,例如:

  • 用户 ID:10001
  • 用户组 ID:10000

那么可以在 NFS 服务器上配置目录权限:

chown -R root:10000 /data/nfs/app
chmod -R 775 /data/nfs/app

这样,同组用户就能创建和写入文件。

2.1.3. 直接指定容器用户 ID

如果明确知道 Pod 内部使用的用户 ID,可以直接把目录属主改成该用户:

chown -R 10001:10000 /data/nfs/app 
chmod -R 755 /data/nfs/app

这样,容器内用户就完全拥有该目录的权限,同时保证其他人只读。

2.2. 总结
  • NFS 是 K8s 常见的持久化存储方案,简单、通用。
  • 核心问题在于目录权限,需要根据实际容器用户来调整。

推荐:开发环境可以直接用 777;生产环境最好用 用户组 ID 或 指定 UID 的方式,既保证功能又更安全。

3. k8s 设置挂载

3.1. 建立pv

pv集群级,不需要指定命名空间:

apiVersion: v1          
kind: PersistentVolume
metadata:name: yzy-data
spec:accessModes:- ReadWriteMany    capacity:storage: 200Ginfs:path: /data/nfs/appserver: <NFS服务ip>persistentVolumeReclaimPolicy: DeletestorageClassName: nfs-storagevolumeMode: Filesystem
3.1. 建立pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: yzy-datanamespace: <命名空间>
spec:accessModes:- ReadWriteManyresources:requests:storage: 200GistorageClassName: nfs-storagevolumeMode: FilesystemvolumeName: yzy-data   # 显式绑定上面建的 PV
3.3. 快速验证
# 1. 应用
kubectl apply -f pv.yaml
kubectl apply -f pvc.yaml# 2. 看状态
kubectl get pv yzy-data pvc/yzy-data -n <命名空间># 3. 若 PVC 一直 Pending
kubectl describe pvc yzy-data -n <命名空间>
3.4. po 配置加NFS挂载
  1. volumes —— 声明“盘从哪来”
  2. volumeMounts —— 声明“挂到容器哪”

示例:
在这里插入图片描述

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

相关文章:

  • Ansible 角色使用指南
  • js设计模式-状态模式
  • 腾讯最新开源HunyuanVideo-Foley本地部署教程:端到端TV2A框架,REPA策略+MMDiT架构,重新定义视频音效新SOTA!
  • 2025精选5款AI视频转文字工具,高效转录秒变文字!
  • MySQL集群——主从复制
  • MongoDB 源码编译与调试:深入理解存储引擎设计
  • solidity的高阶语法
  • 【Linux】网络安全管理:SELinux 和 防火墙联合使用 | Redhat
  • 红黑树 + 双链表最小调度器原型
  • 【JMeter】分布式集群压测
  • 解锁上下文的力量:大型语言模型中的上下文工程全解析
  • Java基础篇02:基本语法
  • CAD:修改
  • 23.【C++进阶】异常(try、catch、throw)
  • SQL表一共有几种写入方式
  • 零基础入门AI: YOLOv5 详解与项目实战
  • 数据库存储大量的json文件怎么样高效的读取和分页,利用文件缓存办法不占用内存
  • 数据结构:排序
  • 【Day21】146.LRU缓存 (Least Recently Used)
  • 详细解读Docker
  • STC携手VEX发起全球首个碳资产RWA生态,泰国峰会即将引爆绿色金融
  • 飞算JavaAI炫技赛:电商系统开发全流程实战解析
  • 卫星在轨光压计算详解
  • openharmony之AV_CodeC音视频编解码模块详解(二)
  • (未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
  • Kubernetes实战系列(4)
  • v4l2设置图像分辨率失败的问题
  • react+umi项目如何添加electron的功能
  • PyTorch 中.backward() 详解使用
  • 前后端国密加密传输用户密码流程