PV&PVC管理

最近更新时间: 2024-06-12 15:06:00

简介

概述

PersistentVolume(PV):集群内的存储资源,例如节点是集群的资源。PV 独立于 Pod 的生命周期,根据不同的 StorageClass 类型创建不同类型的 PV。 PersistentVolumeClaim(PVC):集群内的存储请求。例如,PV 是 Pod 使用节点资源,PVC 则声明使用 PV 资源。当 PV 资源不足时,PVC 也可以动态创建 PV。

注意事项

  • CBS 盘不支持跨可用区挂载。若挂载 CBS 类型 PV 的 Pod 迁移到其他可用区,将会导致挂载失败。

  • TKE 控制台不支持 CBS 盘扩缩容,请自行前往 CBS 控制台执行操作。

PV&PVC 控制台操作指引

静态创建 PV

静态创建 PV 适用于已有存量云盘,并在集群内使用的场景。

  1. 登录 TKE 控制台。

  2. 在左侧导航栏单击【集群】,进入“集群管理”页面。

  3. 单击需要创建 PV 的集群【ID/名称】,进入待创建 PV 的集群管理页面。

  4. 选择【存储】 > 【PV】,进入“PersistentVolume”信息页面。

  5. 单击【新建】,进入“新建PersistentVolume”页面。

  6. 根据实际需求,设置 PV 参数。关键参数信息如下:

    • 来源设置:根据实际需求进行选择,默认为 “静态创建”。

    • 名称:自定义。

    • 选择云盘:根据实际需求进行选择。

    • StorageClass:根据实际需求进行选择。

  7. 单击【创建PersistentVolume】,完成创建。

创建 PVC

  1. 登录 TKE 控制台。

  2. 在左侧导航栏单击【集群】,进入“集群管理”页面。

  3. 单击需要创建 PVC 的集群【ID/名称】,进入待创建 PVC 的集群管理页面。

  4. 选择【存储】 > 【PVC】,进入“PersistentVolumeClaim”信息页面。如下图所示:

  5. 单击【新建】,进入【新建PersistentVolumeClaim】页面。如下图所示:

  6. 根据实际需求,设置 PVC 参数。关键参数信息如下:

    • 名称:自定义。

    • 命名空间:根据实际需求进行选择命名空间类型。

    • StorageClass:根据实际需求进行选择。

    • 容量:根据实际需求进行设置。

  7. 单击【创建PersistentVolumeClaim】,完成创建。

    若已有 PV 不足,系统将自动创建新的 PV。

创建 Workload 使用 PVC 数据卷

  1. 登录 TKE 控制台。

  2. 在左侧导航栏单击【集群】,进入“集群管理”页面。

  3. 单击需要部署 Workload 的集群【ID/名称】,进入待部署 Workload 的集群管理页面。

  4. 在【工作负载】下,任意选择 Workload 类型,进入对应的信息页面。例如,选择【工作负载】 > 【DaemonSet】,进入“DaemonSet”信息页面。

  5. 单击【新建】,进入“新建Workload”页面。

  6. 根据页面信息,设置工作负载名、命名空间等信息。并在【数据卷】中,单击【添加数据卷】,添加数据卷。

  7. 选择【使用已有PVC】方式,填写名称,选择已有的 PVC。

  8. 单击【创建Workload】,完成创建。

    使用 PVC 挂载模式,数据卷只能挂载到一台 node 主机上

Kubectl 操作 PV&PVC 指引

当前仅支持 CBS 类型的 PV&PVC。您可通过 StorageClass 管理 指定 PV 绑定的云盘的类型。以下仅提供示例文件,您可直接通过 Kubectl 进行创建操作。

(可选)创建 PV

通过已有 CBS 创建 PV。若未创建 PV,在 创建 PVC 时,系统将自动创建对应的 PV。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nginx-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  qcloudCbs:
      cbsDiskId: disk-xxxxxxx ## 指定已有的CBS id
      fsType: ext4
  storageClassName: cbs

创建 PVC

若未 创建 PV,在创建 PVC 时,系统将自动创建对应的 PV。YAML 示例如下:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nginx-pv-claim
spec:
  storageClassName: cbs
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  • 普通云盘大小必须是10的倍数,最小为10。

  • 高效云盘最小为50GB。

  • SSD 云硬盘最小为200GB,具体策略请参见 云硬盘文档。

使用 PVC

YAML 示例如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      qcloud-app: nginx-deployment
  template:
    metadata:
      labels:
        qcloud-app: nginx-deployment
    spec:
      containers:
      - image: nginx
        imagePullPolicy: Always
        name: nginx
        volumeMounts:
        - mountPath: "/opt/"
          name: pvc-test
      volumes:
      - name: pvc-test
        persistentVolumeClaim:
          claimName: nginx-pv-claim # 已经创建好的 PVC