这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

配置PVC变更

PVC变更特性使用CRD实现,当前资源说明如下。

表 1 资源说明

NAME

APIVERSION

NAMESPACED

KIND

volumemodifyclaims

xuanwu.huawei.io/v1

false

VolumeModifyClaim

volumemodifycontents

xuanwu.huawei.io/v1

false

VolumeModifyContent

  • VolumeModifyClaim资源支持创建/删除/查询,不支持更新。
  • VolumeModifyContent资源仅支持查询,用于展示单个PVC变更详情,请勿手动创建/删除/修改。
  • VolumeModifyContent资源被VolumeModifyClaim管理,请勿手动管理VolumeModifyContent资源。

1 - 创建PVC变更

前提条件

待变更PVC关联的存储后端已经组成双活存储后端,若未组成双活存储后端,请参考手动更新存储后端章节配置。

1.1 - 准备PVC变更文件

PVC变更文件说明

PVC变更文件样例模板为/examples/volumemodifyclaim.yaml,具体配置项如下表所示:

表 1 参数说明

参数

描述

必选参数

默认值

备注

apiVersion

API组,string类型

xuanwu.huawei.io/v1

固定填写xuanwu.huawei.io/v1

kind

资源的类型,string类型

VolumeModifyClaim

固定填写VolumeModifyClaim

metadata.name

集群资源对象的名称,string类型

-

名称必须满足DNS 子域名的命名规则,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以小写字母数字字符开头和结尾,最大长度不超过63个字符

spec.source.kind

数据源类型,string类型

StorageClass

仅支持设置为:StorageClass

spec.source.name

数据源名称,string类型

-

仅支持设置StorageClass名称

spec.parameters.hyperMetro

是否将普通卷变更为双活卷。当前取值仅支持"true"。

-

仅支持主站点普通存储卷变更为双活存储卷。

spec.parameters.metroPairSyncSpeed

双活Pair同步速率。支持配置为1~4。

可选值:

  • 1:低
  • 2:中
  • 3:高
  • 4:最高

-

当且仅当spec.parameters.hyperMetro为"true"时生效。

注意:

  • 未配置该参数时,双活Pair存储速率由存储决定。
  • 最高速率同步时可能导致主机时延增大。

  • spec.source.kind和spec.source.name用于指定卷变更范围,例如配置为StorageClass和对应名称时,将会变更使用目标StorageClass发放的所有的处于Bound状态的PVC。
  • 当所有关联的PVC完成变更后,华为CSI会替换原有的StorageClass,并增加VolumeModifyClaim的spec.parameters参数,使得PVC满足StorageClass定义。

典型场景配置请参考如下示例:

变更普通卷为双活卷

配置变更普通卷为双活卷示例如下:

apiVersion: xuanwu.huawei.io/v1
kind: VolumeModifyClaim
metadata:
  name: myvmc
spec:
  source:
    kind: StorageClass
    name: mysc
  parameters:
    hyperMetro: "true"

1.2 - 创建PVC变更资源

本章节介绍如何基于已配置的PVC变更文件创建PVC变更资源。

  • 仅支持双活AA模式。
  • 如果变更场景为普通卷变更为双活卷,则仅支持变更主站点端存储卷。
  • 创建PVC变更资源期间,请勿使用华为CSI管理PVC。
  • 不支持对同一个PVC创建多个VolumeModifyClaim资源,若存在对目标PVC的多次变更,请在单次变更完成之后再执行。

操作步骤

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行以下命令,创建PVC变更。

    kubectl create -f volumemodifyclaim.yaml 
    
  3. 参考查询PVC变更查询创建结果。

2 - 查询PVC变更

本章节介绍如何使用Kubectl查询PVC变更状态,当前华为CSI通过CRD提供以下API。

查询VolumeModifyClaim

使用kubectl查询VolumeModifyClaim步骤如下。

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行以下命令,查询PVC变更。其中 vmc-name 为VolumeModifyClaim资源名称。

    kubectl get volumemodifyclaims <vmc-name> -owide
    

    命令结果示例如下:

    NAME    STATUS      READY   SOURCEKIND     SOURCENAME   STARTEDAT              COMPLETEDAT            AGE
    myvmc   Completed   1/1     StorageClass   mysc         2024-06-06T03:19:13Z   2024-06-06T03:19:16Z   2m2s
    

    表 1 回显说明

    名称

    说明

    NAME

    VolumeModifyClaim资源名称。

    STATUS

    VolumeModifyClaim资源状态,可取值如下:

    • Pending:初始状态。
    • Creating:VolumeModifyClaim完成基本校验,且服务端已经接收变更任务,但是该任务还未执行完成。
    • Completed:所有关联的PVC均完成变更。
    • Rollback:关联的PVC部分完成变更时,用户执行了删除PVC变更操作。
    • Deleting:关联的PVC全部完成变更时,用户执行了删除PVC变更操作。

    READY

    完成变更PVC数量/全部待变更PVC数量。

    SOURCEKIND

    数据源类型,例如StorageClass。

    SOURCENAME

    数据源名称,例如StorageClass名称。

    STARTEDAT

    变更开始时间,指服务端接收该任务并开始处理的时间戳。

    COMPLETEDAT

    变更完成时间,指所有关联的PVC均完成变更后的时时间戳,仅STATUS为Completed时,存在该值。

    AGE

    VolumeModifyClaim从创建至当前的存活时间。

VolumeModifyClaim支持使用kubectl查看Events信息,当VolumeModifyClaim无法满足创建要求,或者创建过程中出现错误时,服务端将记录Events信息。参考命令如下:

kubectl describe volumemodifyclaims local-to-hypermetro 

查询VolumeModifyContent

VolumeModifyContent由VolumeModifyClaim资源创建,记录了单个PVC的变更详情,使用kubectl查询VolumeModifyContent步骤如下。

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行命令,查询PVC变更。其中myvmc-uid为VolumeModifyContent资源名称。

    kubectl get volumemodifycontents myvmc-uid  -owide
    

    命令结果示例如下:

    NAME         STATUS      MODIFYCLAIMNAME     SOURCEVOLUME   STARTEDAT              COMPLETEDAT            AGE
    myvmc-uid    Completed   myvmc               default/mypvc  2024-06-06T03:19:07Z   2024-06-06T03:19:09Z   36m
    

    表 2 回显说明

    名称

    说明

    NAME

    VolumeModifyContent资源名称,格式为:VolumeModifyClaim名称-关联PVC的UID。

    STATUS

    VolumeModifyContent资源状态,可取值如下:

    • Pending:初始状态。
    • Creating:VolumeModifyContent完成基本校验,且服务端已经接收变更任务,但是该任务还未执行完成。
    • Completed:关联的PVC完成变更。
    • Rollback:正在回滚PVC变更。

    MODIFYCLAIMNAME

    关联的VolumeModifyClaim名称。

    SOURCEVOLUME

    关联的PVC信息,格式为:命名空间名称/PVC名称。

    STARTEDAT

    PVC变更开始时间,指服务端接收该任务并开始处理的时间戳。

    COMPLETEDAT

    PVC变更完成时间,指所有关联的PVC均完成变更后的时时间戳,仅STATUS为Completed时,存在该值。

    AGE

    即VolumeModifyContent从创建至当前的存活时间。

VolumeModifyContent支持使用kubectl查看Events信息,当VolumeModifyContent无法满足创建要求,或者变更PVC出现错误时,服务端将记录Events信息。参考命令如下:

kubectl describe volumemodifycontents myvmc-uid

3 - 删除PVC变更

  • 当VolumeModifyClaim的STATUS值为Creating时,删除VolumeModifyClaim资源,将会在存储侧删除此次变更创建的资源,然后移除集群资源。在删除后,如果继续使用原有的StorageClass进行PVC管理,需要将关联的存储后端恢复为非双活存储后端。
  • 当VolumeModifyClaim的STATUS值为Pending或Completed时,删除VolumeModifyClaim资源,仅会移除集群资源,不会和存储交互,即不会在存储侧删除变更创建的资源。
  • VolumeModifyContent被VolumeModifyClaim管理,请勿手动管理VolumeModifyContent资源。
  • 若待变更PVC中已有部分PVC满足变更要求,当批量变更失败时,会移除掉所有PVC的变更,导致已满足变更条件的PVC不再满足。
  • 若待变更PVC已经在存储侧被手动管理,则可能导致变更失败。使用变更特性时,请勿手动管理存储卷。

当前章节介绍如何使用kubectl删除PVC变更,基于步骤如下。

操作步骤

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行以下命令,删除PVC变更。其中 vmc-name 为VolumeModifyClaim资源名称。

    kubectl delete volumemodifyclaims <vmc-name>
    
  3. 参考创建PVC变更资源查询删除结果。