前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【K8s】Kubernetes 存储之 PersistentVolume

【K8s】Kubernetes 存储之 PersistentVolume

作者头像
行者Sun
发布2024-09-02 12:48:39
2530
发布2024-09-02 12:48:39
举报
文章被收录于专栏:Kubernetes

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~

基本介绍

在 Kubernetes 中,PersistentVolume(持久化卷,PV)是一种与存储相关的资源对象,可以定义存储容量、访问模式、回收策略、存储插件等信息。PV 具有独立的生命周期,不会随着 Pod 的销毁被删除。PV 的生命周期包括配置、绑定、使用、保护、回收几个阶段。

🔔 PV 对象不属于任何命名空间!

工作原理

  • 定义对象:静态模式下,管理员预先在集群中定义 PV 对象,指定其存储容量、访问模式、回收策略、存储插件等配置信息
  • 创建对象:静态模式下,按照管理员预先定义好的资源清单创建 PV 对象;动态模式下,StorageClass 根据 PVC 的申请动态创建 PV 对象
  • 绑定:当一个 PVC 对象创建后,Kubernetes 会寻找一个匹配的 PV 进行绑定,这个过程可以是立即的,也可以是延迟的
  • 使用:PVC 对象与 PV 对象完成绑定后,Pod 就可以通过挂载 PVC 来访问持久化存储。Pod 的资源清单中会包含对 PVC 对象的引用,Kubernetes 负责将与 PVC 对象绑定的 PV 对象挂载到 Pod 的容器中
  • 回收策略:PV 支持三种回收策略:Retain、Recycle、Delete。当 PVC 对象被销毁时,Kubernetes 会根据 PV 的回收策略来处理 PV 对象

资源清单(示例)

1、使用本地存储

  • HostPath 方式
代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: demo-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle / Retain / Delete     # PV 回收策略
  hostPath:
    path: /data/nfs
  • Local 方式
代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: demo-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle / Retain / Delete     # PV 回收策略
  local:
    path: /data/nfs
  nodeAffinity:
   requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: xxxx
          operator: In
          values:
          - xxxx
 
🔔 Local 方式必须要添加 nodeAffinity,否则创建时会报错:
spec.nodeAffinity: Required value: Local volume requires node affinity

2、使用 NFS 存储

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: demo-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle / Retain / Delete     # PV 回收策略
  nfs:
    server: xx.xx.xx.xx               # 指定 NFS 服务器地址
    path: /data/nfs                   # 指定 NFS 服务器目录

3、使用 CSI 存储(如阿里云 NAS)

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: demo-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle / Retain / Delete     # PV 回收策略
  csi:
    driver: com.example.team/csi-driver
    volumeHandle: existingVolumeName                      # 与PV 名称保持一致
    readOnly: false
    volumeAttributes:
      server: "xxxx"
      path: "/xxxx"
  mountOptions:
  - nolock,tcp,noresvport
  - vers=3
相关说明

1、状态类型

PV 对象创建后,通常会存在以下几种状态:

  • Available:可用,还未被 PVC 对象绑定
  • Bound:已绑定,已经被 PVC 对象绑定
  • Released:已释放,即 PVC 对象已被删除,但 PV 资源未被集群重新声明(与 Retain 回收方式相关)
  • Failed:已失败,即 PV 对象回收失败

2、访问模式(AccessModes)

在 PV 对象的资源清单中,可以定义以下几种访问模式:

  • ReadWriteOnce:该模式为读写权限,只能被单个 Node 节点挂载
  • ReadOnlyMany:该模式为只读权限,可以被多个 Node 节点挂载
  • ReadWriteMany:该模式为读写权限,可以被多个 Node 节点挂载

3、回收策略(persistentVolumeReclaimPolicy)

在 PV 对象的资源清单中,可以定义以下几种回收策略:

  • Recycle:循环策略,该策略允许保留 PV 对象,并可以再次被新创建的 PVC 对象绑定
  • Retain:保留策略,该策略允许保留 PV 对象,但不可以再次被新创建的 PVC 对象绑定
  • Delete:删除策略(默认),该策略不保留 PV 对象
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 实施运维知识交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档