k8s按需创建 PV和创建与使用 PVC

在 Kubernetes 中,PersistentVolume(PV)和 PersistentVolumeClaim(PVC)用于管理存储资源。PV 是集群中的存储资源,而 PVC 是 Pod 请求 PV 的方式。按需创建 PV 通常使用 StorageClass 实现动态存储分配,PVC 通过声明请求所需的存储量与访问模式来绑定相应的 PV。以下是按需创建 PV 和使用 PVC 的具体步骤。

1. 按需创建 PV(使用 StorageClass)

StorageClass 用于定义动态存储分配的策略,允许 Kubernetes 自动创建 PV,而无需手动预先配置。

创建 StorageClass

首先定义一个 StorageClass 资源,指定存储类型和配置参数。

yaml 复制代码
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs  # 选择适合您的云提供商或存储类型
parameters:
  type: gp2
reclaimPolicy: Delete  # PV 被释放后会删除存储(也可设置为 Retain,保留数据)
volumeBindingMode: WaitForFirstConsumer

2. 创建 PVC 以请求 PV

PersistentVolumeClaim 是 Pod 请求存储资源的声明。配置 PVC 时指定需要的存储大小和访问模式,Kubernetes 会使用指定的 StorageClass 动态创建匹配的 PV 并绑定到该 PVC。

PVC 配置示例

以下示例中,PVC 请求 5Gi 的存储,并使用之前创建的 StorageClassstandard)。

yaml 复制代码
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce  # 设置访问模式,可选 ReadOnlyMany、ReadWriteMany 等
  storageClassName: standard  # 指定使用的 StorageClass
  resources:
    requests:
      storage: 5Gi

当这个 PVC 申请存储时,Kubernetes 会根据 StorageClass 配置动态创建一个 PV 并绑定到 PVC。

3. 在 Pod 中使用 PVC

在 Pod 配置中引用 PVC 以挂载存储卷,从而使应用可以使用持久存储。

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    volumeMounts:
    - mountPath: "/usr/share/nginx/html"
      name: my-storage
  volumes:
  - name: my-storage
    persistentVolumeClaim:
      claimName: my-pvc

各字段解析

  • volumeMounts:指定容器内部的挂载路径,此路径对应于卷绑定的位置。
  • volumes:引用 PVC 以将持久卷挂载到容器中。

验证

  1. 创建 StorageClass、PVC 和 Pod :使用 kubectl apply -f 命令应用所有配置文件。
  2. 检查 PVC 状态 :运行 kubectl get pvc my-pvc,查看 PVC 是否已绑定(Bound 状态)。
  3. 检查 Pod 挂载 :运行 kubectl describe pod my-pod,确认卷已挂载到指定路径。

注意事项

  • reclaimPolicy :定义 PV 释放后的处理方式,Delete 表示删除存储资源,而 Retain 表示保留。
  • volumeBindingModeWaitForFirstConsumer 表示 PV 会在 Pod 请求时创建,适合多节点调度环境。
相关推荐
Andy杨15 分钟前
20250712-1-Kubernetes 监控与日志管理-K8s日志管理与维护_笔记
笔记·容器·kubernetes
蝸牛ちゃん1 小时前
云计算三大服务模式深度解析:IaaS、PaaS、SaaS
云原生·系统架构·云计算·软考高级·saas·paas·iaas
阿里云云原生1 小时前
GPU 降成本免运维,睿观 AI 助手选择函数计算
云原生·serverless
KKKingWei3 小时前
Kubernetes Dashboard UI 部署安装
云原生·容器·kubernetes
麟城Lincoln5 小时前
【Linux-云原生-笔记】系统引导修复(grub、bios、内核、系统初始化等)
linux·笔记·云原生·bios·grub·系统修复·系统引导
KubeSphere 云原生5 小时前
云原生周刊:镜像兼容性
云原生
蓝天居士5 小时前
docker常用命令集(2)
docker·容器
panamera125 小时前
云端docker小知识
运维·docker·容器
退役小学生呀16 小时前
十一、K8s细粒度权限管理RBAC
linux·docker·云原生·容器·kubernetes·k8s
昭阳~17 小时前
Kubernetes 高级调度特性
云原生·容器·kubernetes