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

【k8s】pvc 配置的两种方式volumeClaimTemplates 和 PersistentVolumeClaim

pvc配置实例   

实例1

在Deployment中配置 template:xxxxxxvolumeClaimTemplates:- metadata:name: dataspec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: nfsdev-storageclass (创建好的storageClassName)

实例2

#先创建一个pvc 然后在 Deployment中引用
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nacosserver-pvcnamespace: xxxdev
spec:storageClassName: course-nfs64storageaccessModes:- ReadWriteOnceresources:requests:storage: 1Gi##################################################containers........#创建了卷pvcdata,然后挂载到容器中的某个目录volumeMounts:- name: pvcdatamountPath: /home/nacos/plugins/peer-findersubPath: peer-finder- name: pvcdatamountPath: /home/nacos/datasubPath: data- name: pvcdatamountPath: /home/nacos/logssubPath: logs# 修复点 2: volumes 定义在 Pod 级别(与 containers 同级)volumes:- name: pvcdatapersistentVolumeClaim:claimName: nacosserver-pvc

两种pvc使用的不同

     这两个配置涉及 Kubernetes 中两种不同的 PVC(PersistentVolumeClaim)使用方式,主要区别在于创建方式使用场景


1. volumeClaimTemplates (动态模板方式)

volumeClaimTemplates:       # 用于 StatefulSet 的动态 PVC 模板- metadata:name: data           # 生成的 PVC 名称前缀(如 data-0, data-1)spec:accessModes: [ "ReadWriteMany" ]  # 多节点读写storageClassName: "course-nfs64storag"  # 存储类名称(注意拼写)resources:requests:storage: 20Gi    # 请求 20GB 存储
✅ 特点:
  • 动态创建 PVC
    当 StatefulSet 被部署时,Kubernetes 会自动为每个 Pod 副本生成独立的 PVC(如 data-<pod-name>-0data-<pod-name>-1)。

  • 绑定 StatefulSet 生命周期
    删除 StatefulSet 时,关联的 PVC 默认不会被删除(需手动清理)。

  • 适用场景
    有状态应用(如 MySQL、Redis 集群),每个 Pod 需要独立的持久化存储。


2. 独立 PVC + 手动引用方式

# 先创建独立的 PVC 资源
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nacosserver-pvc      # 固定名称的 PVCnamespace: xxxdev     # 指定命名空间
spec:storageClassName: course-nfs64storage  # 存储类名称accessModes:- ReadWriteOnce         # 单节点读写resources:requests:storage: 1Gi          # 请求 1GB 存储
---
# 在 Pod/Deployment 中引用已存在的 PVC
volumes:- name: pvcdatapersistentVolumeClaim:claimName: nacosserver-pvc  # 直接引用 PVC 名称
✅ 特点:
  • 静态创建 PVC
    手动提前创建 PVC 资源(通过 kubectl apply)。

  • 跨 Pod 共享存储
    多个 Pod 可通过 claimName 引用同一个 PVC(需访问模式支持,如 ReadWriteMany)。

  • 独立生命周期
    PVC 与 Pod 解耦,删除 Pod 不会删除 PVC。

  • 适用场景
    通用存储需求(如单实例应用、共享存储目录)。


🔍 关键区别总结:

特性volumeClaimTemplates (StatefulSet)独立 PVC + claimName
PVC 创建方式动态生成(按 Pod 副本数自动创建)手动预先创建
PVC 命名规则自动生成(如 data-0data-1固定名称(如 nacosserver-pvc
存储隔离性每个 Pod 有独立 PVC多个 Pod 可共享同一 PVC
访问模式示例中为 ReadWriteMany(多节点读写)示例中为 ReadWriteOnce(单节点读写)
适用控制器专用于 StatefulSet适用于 Pod/Deployment/StatefulSet
生命周期管理随 StatefulSet 创建/删除(PVC 需手动删)独立管理

❗ 注意事项:

  1. 访问模式冲突
    示例中 volumeClaimTemplates 使用 ReadWriteMany,而独立 PVC 使用 ReadWriteOnce
    若多个 Pod 同时挂载独立 PVC,必须使用 ReadWriteMany,否则会出现挂载错误

  2. 存储类名称拼写
    volumeClaimTemplates 中为 course-nfs64storag(少字母 e),独立 PVC 中为 course-nfs64storage
    需确保名称一致,否则可能因存储类不存在导致 PVC 挂起。

  3. 存储大小差异
    动态模板申请 20Gi,独立 PVC 申请 1Gi,根据实际需求调整。


💡 选择建议:

  • 需要 为每个 Pod 提供独立存储(如数据库集群)→ volumeClaimTemplates + StatefulSet

  • 需要 共享存储卷(如配置文件目录)→ 独立 PVC + claimName
    (确保存储类支持 ReadWriteMany,如 NFS)

http://www.lryc.cn/news/618537.html

相关文章:

  • 腾讯云iOA:全面提升企业办公安全与效率的智能解决方案
  • 可泛化逻辑推理Python编程作为医疗AI发展方向研究
  • OpenBMC中C++单例模式架构与实现全解析
  • 【自动化备份全网服务器数据项目】
  • 虚拟机环境部署Ceph集群的详细指南
  • 雪花算法snowflake分布式id生成原理详解,以及对解决时钟回拨问题几种方案讨论
  • Docker守护进程安全加固在香港VPS环境的操作标准
  • 【读代码】深度解析 Researcher:开源自动化科研助手
  • 【前端实战】如何封装日期格式化工具,满足后端 LocalDate 和 LocalDateTime 格式需求
  • Ubuntu 全盘备份
  • Day 38: Dataset类和DataLoader类
  • Labelme从安装到标注:零基础完整指南
  • 【完美解决】在 Ubuntu 24.04 上为小米 CyberDog 2 刷机/交叉编译:终极 Docker 环境搭建指南
  • mimiconda+vscode
  • HeidiSQL 连接 MySQL 报错 10061
  • vue+Django农产品推荐与价格预测系统、双推荐+机器学习预测+知识图谱
  • 跨界重构规则方法论
  • ubuntu24下keychorn键盘连接不了的改建页面的问题修复
  • 深入理解哈希结构及其应用
  • secureCRT ymodem协议连续传输文件速率下降
  • 鸿蒙开发教程实战案例源码分享-好看的SwitchButton
  • [SC]SystemC中的SC_FORK和SC_JOIN用法详细介绍
  • 17、CryptoMamba论文笔记
  • 42.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成认证(一)
  • UNet改进(32):结合CNN局部建模与Transformer全局感知
  • Day45--动态规划--115. 不同的子序列,583. 两个字符串的删除操作,72. 编辑距离
  • DeepSeek-R1-0528 推理模型完整指南:领先开源推理模型的运行平台与选择建议
  • XC7A15T-1FTG256C Xilinx AMD Artix-7 FPGA
  • Linux中Apache与Web之虚拟主机配置指南
  • git config的配置全局或局部仓库的参数: local, global, system