使用云硬盘静态存储卷

使用云硬盘静态存储卷

1. 操作场景

容器云CSK容器集群支持通过创建 PV/PVC,并为工作负载挂载数据卷的方式使用云硬盘。

2. 注意事项

  • 创建云硬盘静态存储卷PV前,需要在基础云的云硬盘产品处,提前购买【容器共享】的云硬盘实例;

  • 【容器共享】的云硬盘实例不仅可在容器集群中使用,也支持对基础云的云服务器实例挂载或卸载,但不支持同时挂载使用;
  • 一个【容器共享】的云硬盘实例仅支持创建一个 PV,同时只能被一个容器集群挂载;
  • 【容器共享】的云硬盘实例如需进行扩容,请在基础云的云硬盘页面操作,扩容完成后需要对工作负载重新挂载PVC;
  • 【容器共享】的云硬盘实例如需进行回滚,请先删除关联PV;
  • 云硬盘静态存储卷PV支持的文件系统类型:ext3、ext4、xfs;
  • 云硬盘静态存储卷PV仅支持被Pod数量为1的工作负载挂载;
  • 创建PVC前,需要创建PV,PV的状态需要为Available;
  • Released 状态的 PV 需要手动删除 YAML 配置文件中的 claimRef 字段才能与 PVC 成功绑定。

3. 创建PV

3.1. 通过容器云控制台创建PV

登录容器云控制台;
若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
在容器云控制台左侧导航栏中,选择 【存储管理】-【存储卷】;

单击【创建】,进入【创建存储卷】页面。根据实际需求,完成参数设置;

  • 名称:设置PV的名称;
  • 存储卷类型:默认为云硬盘;
  • 读写权限:默认为ReadWriteOnce;
  • 云硬盘:根据实际需求选择已购买的容器共享云硬盘;
  • 文件系统类型:根据实际需求选择文件系统类型;
  • 标签:输入键-值对(Key-Value),为PV设置标签;
  • 注释:输入键-值对(Key-Value),为PV设置注释;

单击确定,完成PV创建。

3.2. 通过YAML创建PV

登录容器云控制台;
若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
在容器云控制台左侧导航栏中,选择 【存储管理】-【存储卷】;

单击【YAML 创建】,完成参数设置;

  • 模板:支持使用容器云提供的系统模板或自定义模板;
  • 模板内容:选择好模板后,在“模板内容”区域可以对模板进行编辑。完成参数设置后,点击“保存模板”可将改动保存到自定义模板;

单击确定,完成PV创建。

3.3. 通过kubectl创建PV

YAML示例:

apiVersion: "v1"
kind: "PersistentVolume"
metadata:
  finalizers:
  - "kubernetes.io/pv-protection"
  name: "pv"
spec:
  accessModes:
  - "ReadWriteOnce"
  capacity:
    storage: "50Gi"
  csi:
    driver: "ycbd.csi.csk.cloud-service.cn"
    fsType: "ext3"
    volumeAttributes:
      staticVolume: "true"
    volumeHandle: "VOL-11A-XXX"   # SSD云盘(容器共享)ID
  persistentVolumeReclaimPolicy: "Retain"
  volumeMode: "Filesystem"

参考YAML示例,准备 PV YAML 文件;
安装 kubectl,并连接集群。操作详情请参见 连接集群
执行以下命令,创建 PV YAML 文件:

kubectl  --kubeconfig  KUBECONFIG_NAME create -f PV YAML 文件名称

例如,创建一个文件名为 my-PV.yaml 的 PV YAML 文件,则执行以下命令:

kubectl  --kubeconfig  KUBECONFIG_NAME create -f my-PV.yaml

执行以下命令,验证创建是否成功:

kubectl  --kubeconfig  KUBECONFIG_NAME get PV

返回类似以下信息,即表示创建成功。

NAME  CAPACITY  ACCESS MODES  RECLAIM POLICY  STATUS    CLAIM  STORAGECLASS  REASON  AGE
my-pv 20Gi      RWO           Retain          Available                              1m40s

4. 创建PVC

4.1. 通过容器云控制台创建PVC

登录容器云控制台;
若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
在容器云控制台左侧导航栏中,选择 【存储管理】-【存储卷声明】;

单击【创建】,进入【创建存储卷声明】页面。根据实际需求,完成参数设置;

  • 名称:设置PVC的名称;
  • 命名空间:根据实际需求选择集群下的命名空间;
  • 存储卷类型:选择【云硬盘】;
  • 分配模式:会根据选择的存储卷类型自动选择,【云硬盘】则对应【静态创建】;
  • 读写权限:默认为ReadWriteOnce;
  • 存储卷:根据实际需求选择集群下的PV,仅显示Available状态的PV;
  • 云盘类型:根据实际选择的PV,显示云盘类型;
  • 容量:根据实际选择的PV,显示容量大小;
  • 标签:输入键-值对(Key-Value),为PVC设置标签;
  • 注释:输入键-值对(Key-Value),为PVC设置注释;

单击确定,完成PVC创建。

4.2. 通过YAML创建PVC

登录容器云控制台;
若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
在容器云控制台左侧导航栏中,选择 【存储管理】-【存储卷声明】;

单击【YAML 创建】,完成参数设置;

  • 模板:支持使用容器云提供的系统模板或自定义模板;
  • 模板内容:选择好模板后,在“模板内容”区域可以对模板进行编辑。完成参数设置后,点击“保存模板”可将改动保存到自定义模板;

单击确定,完成PVC创建。

4.3. 通过kubectl创建PVC

YAML示例:

apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
  finalizers:
  - "kubernetes.io/pvc-protection"
  name: "pvc"
  namespace: "default"
spec:
  accessModes:
  - "ReadWriteOnce"
  resources:
    requests:
      storage: "50Gi"
  volumeMode: "Filesystem"
  volumeName: "pv"

参考YAML示例,准备 PVC YAML 文件;
安装 kubectl,并连接集群。操作详情请参见 连接集群
执行以下命令,创建 PVC YAML 文件:

kubectl  --kubeconfig  KUBECONFIG_NAME create -f PVC YAML 文件名称

例如,创建一个文件名为 my-PVC.yaml 的 PVC YAML 文件,则执行以下命令:

kubectl  --kubeconfig  KUBECONFIG_NAME create -f my-PVC.yaml

执行以下命令,验证创建是否成功:

kubectl  --kubeconfig  KUBECONFIG_NAME get PVC

返回类似以下信息,即表示创建成功。

NAME    STATUS      VOLUME      CAPACITY     ACCESS MODES      STORAGECLASS     AGE
my-pvc  Bound       my-pv       20Gi         RWO                                3m11s

5. 对工作负载挂载PVC

查看创建的PVC的状态,若PVC状态为Bound,则表示创建成功,PVC可以向Pod分配PV存储资源。

5.1. 在创建工作负载过程中,挂载PVC

登录容器云控制台;
若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
在容器云控制台左侧导航栏中,选择 【工作负载】并选择工作负载类型;

单击【创建】,进入【创建工作负载】页面;

在【容器配置】,展开【高级配置】,勾选【存储】-【PVC】,根据实际需求完成参数配置;

  • 存储卷类型:选择【云硬盘】;
  • 挂载源:根据实际需求选择PVC;
  • 容器内挂载路径:根据实际需求填写PVC挂载路径;
  • 子路径:根据实际需求填写子路径subpath;

完成工作负载的配置后,单击创建,完成工作负载创建的同时,也会挂载PVC。

5.2. 为已有工作负载挂载PVC

登录容器云控制台;
若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
在容器云控制台左侧导航栏中,选择【工作负载】,选择已创建的工作负载进入详情;

单击【容器配置】,点击右侧【修改】,进入【编辑容器】页面,展开【高级配置】,勾选【存储】-【PVC】,根据实际需求完成参数配置;

  • 存储卷类型:选择【云硬盘】;
  • 挂载源:根据实际需求选择PVC;
  • 容器内挂载路径:根据实际需求填写PVC挂载路径;
  • 子路径:根据实际需求填写子路径subpath;

单击确定,挂载PVC。

5.3. 修改YAML文件中Pod Template挂载PVC

在Pod Template中的Volume直接关联PVC的名称,即可挂载到容器中。
YAML示例:

spec:
  containers:
  - image: "nginx:latest"
    imagePullPolicy: "IfNotPresent"
    name: "nginx"
    resources:
      limits:
        cpu: "1"
        memory: "1Gi"
      requests:
        cpu: "1"
        memory: "1Gi"
    terminationMessagePath: "/dev/termination-log"
    terminationMessagePolicy: "File"
    volumeMounts:
    - mountPath: "/pvc"        # 挂载路径
      name: "my-pvc"
  dnsPolicy: "ClusterFirst"
  imagePullSecrets:
  - {}
  restartPolicy: "Always"
  schedulerName: "default-scheduler"
  securityContext: {}
  terminationGracePeriodSeconds: 30
  volumes:
  - name: "my-pvc"
    persistentVolumeClaim:
      claimName: "my-pvc"        # PVC的名称

个结果匹配 ""

    无结果匹配 ""