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

返回本页常规视图.

使用kubectl管理存储后端

CSI存储后端基于Kubernetes自定义资源(CRD)实现,除使用oceanctl工具外,也可以直接通过kubectl命令对存储后端资源进行管理。存储后端涉及以下两类CRD资源:

  • StorageBackendClaim(简称sbc):命名空间级别资源,表示用户对存储后端的声明。用户通过创建该资源触发CSI控制器自动完成存储后端的接入。
  • StorageBackendContent(简称sbct):集群级别资源,由CSI控制器在StorageBackendClaim绑定成功后自动创建,表示集群中实际存在的存储后端实例。用户不应直接创建或修改该资源。

  • 使用kubectl管理存储后端前,请确保已安装CSI插件且CRD已正确注册到集群中。
  • StorageBackendContent由控制器自动管理,请勿直接创建或手动修改,否则可能导致存储后端异常。
  • 正在执行卷管理操作期间,请勿删除存储后端。

1 - 创建存储后端

前提条件

  • 已获取存储设备的管理IP地址、用户名、密码等信息。
  • 已获取存储池名称、存储协议等配置信息,具体配置项说明请参考配置存储后端章节。

操作步骤

  1. 准备Secret配置文件,如backend-secret.yaml,Secret中字段说明见 表1 Secret字段说明 。

    apiVersion: v1
    kind: Secret
    metadata:
      name: backend-demo
      namespace: huawei-csi
    type: Opaque
    stringData:
      user: "admin"
      password: "******"
      authenticationMode: "0"
    

    执行以下命令创建Secret。

    kubectl apply -f backend-secret.yaml
    

    表 1 Secret字段说明

    参数

    描述

    必选

    默认值

    备注

    user

    用于登录存储的用户名。

    是

    -

      

    password

    用于登录存储的密码。

    是

    -

      

    authenticationMode

    用于登录存储的认证模式。可配值如下:

    • "0":本地认证
    • "1":LDAP认证

    否

    "0"

    仅 OceanStor Dorado/OceanStor V5/OceanStor V6/OceanStor A600/OceanStor A800 存储支持配置LDAP认证

    maxClientThreads

    同时连接到存储后端的最大连接数。

    否

    30

    范围1~30。

  2. 创建存储后端对应的ConfigMap资源,用于保存存储设备的管理配置信息。

    准备ConfigMap配置文件,以下以创建iSCSI协议类型的OceanStor SAN存储后端为例。其中csi.json键的值为存储后端配置的JSON格式,各配置项说明请按存储类型参考 配置存储后端 章节。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: backend-demo
      namespace: huawei-csi
    data:
      csi.json: |-
        {
          "backends": {
            "storage": "oceanstor-san",
            "name": "backend-demo",
            "namespace": "huawei-csi",
            "urls": ["https://192.168.129.157:8088"],
            "pools": ["StoragePool001"],
            "provisioner": "csi.huawei.com",
            "parameters": {
              "protocol": "iscsi",
              "portals": ["10.10.30.20", "10.10.30.21"]
            },
            "maxClientThreads": "30"
          }
        }    
    

    执行以下命令创建ConfigMap。

    kubectl apply -f backend-configmap.yaml
    
  3. 创建StorageBackendClaim资源,触发CSI控制器接入存储后端,StorageBackendClaim中字段说明见 表2 StorageBackendClaim spec字段说明 。

    准备StorageBackendClaim配置文件,如backend-claim.yaml。

    apiVersion: xuanwu.huawei.io/v1
    kind: StorageBackendClaim
    metadata:
      name: backend-demo
      namespace: huawei-csi
    spec:
      provider: csi.huawei.com
      configmapMeta: huawei-csi/backend-demo
      secretMeta: huawei-csi/backend-demo
      maxClientThreads: "30"
    

    执行以下命令创建StorageBackendClaim。

    kubectl apply -f backend-claim.yaml
    

    表 2 StorageBackendClaim spec字段说明

    参数

    描述

    必选

    默认值

    备注

    provider

    供应者名称,用于匹配CSI插件。

    是

    -

    固定填写:csi.huawei.com

    configmapMeta

    存储配置信息的ConfigMap引用,格式为<namespace>/<name>。

    是

    -

    需与步骤2中创建的ConfigMap名称一致。

    secretMeta

    存储认证信息的Secret引用,格式为<namespace>/<name>。

    是

    -

    需与步骤1中创建的Secret名称一致。

    maxClientThreads

    同时连接到存储后端的最大连接数。

    否

    30

    范围1~30。

  4. 执行以下命令检查存储后端创建结果。

    kubectl get sbct
    

    命令结果示例如下,StorageBackendContent在线状态为true,则创建成功。

    NAME              CLAIM                       SN               VENDORNAME   PROVIDERVERSION   ONLINE   AGE
    content-xxxxxxx   huawei-csi/backend-demo     xxxxxxxxxxxxxx   Huawei       4.13.0            true     53d
    

2 - 查询存储后端

查询StorageBackendClaim

  1. 执行以下命令查询默认命名空间下所有存储后端声明。

    kubectl get sbc -n huawei-csi
    

    命令结果示例如下:

    NAME             STORAGEBACKENDCONTENTNAME      STATUS   AGE
    backend-demo     content-xxxxxxxxxxxx           Bound    53d
    
  2. 执行以下命令以YAML格式查看存储后端声明。

    kubectl get sbc backend-demo -n huawei-csi -o yaml
    

查询StorageBackendContent

  1. 执行以下命令查询所有存储后端实例。

    kubectl get sbct
    

    命令结果示例如下:

    NAME              CLAIM                       SN               VENDORNAME   PROVIDERVERSION   ONLINE   AGE
    content-xxxxxxx   huawei-csi/backend-demo     xxxxxxxxxxxxxx   Huawei       4.13.0            true     53d
    
  2. 执行以下命令以YAML格式查看存储后端示例。

    kubectl get sbct content-xxxxxxx -o yaml
    

3 - 更新存储后端认证信息

为避免直接修改现有Secret导致存储后端短暂不可用,建议采用"先创建新Secret、替换引用、再删除旧Secret"的方式更新认证信息。

操作步骤

  1. 准备新的Secret配置文件,如backend-secret-new.yaml。

    apiVersion: v1
    kind: Secret
    metadata:
      name: backend-demo-new
      namespace: huawei-csi
    type: Opaque
    stringData:
      user: "admin"
      password: "******"
      authenticationMode: "0"
    
  2. 执行以下命令创建新的Secret。

    kubectl apply -f backend-secret-new.yaml
    
  3. 更新StorageBackendClaim,将secretMeta指向新的Secret。CSI会自动将新Secret同步到StorageBackendContent,并使用新的认证信息重新登录存储设备。

    kubectl patch sbc backend-demo -n huawei-csi --type merge -p '{"spec":{"secretMeta":"huawei-csi/backend-demo-new"}}'
    
  4. 执行以下命令检查存储后端更新结果。

    kubectl get StorageBackendContent
    

    命令结果示例如下,StorageBackendContent在线状态为true,则更新成功。

    NAME              CLAIM                       SN               VENDORNAME   PROVIDERVERSION   ONLINE   AGE
    content-xxxxxxx   huawei-csi/backend-demo     xxxxxxxxxxxxxx   Huawei       4.13.0            true     53d
    
  5. 删除旧的Secret。

    kubectl delete secret backend-demo -n huawei-csi
    

4 - 存储后端证书管理

CSI支持通过添加存储证书的方式,使用TLS/SSL协议加密数据传输通道,提高与存储通信的安全性。

添加存储证书

  1. 完成证书制作。以OceanStor Dorado为例,证书制作过程请参考: 点此前往 。

  2. 执行以下命令,从证书文件创建Secret。

    kubectl create secret generic cert-1 --from-file=tls.crt=/path/to/cert.crt -n huawei-csi
    
  3. 执行以下命令更新StorageBackendClaim,启用证书并指定证书Secret。certSecret字段的格式为<namespace>/<secret-name>。

    kubectl patch sbc backend-demo -n huawei-csi --type merge -p '{"spec":{"useCert":true,"certSecret":"huawei-csi/cert-1"}}'
    
  4. 执行以下命令检查存储后端更新结果。

    kubectl get StorageBackendContent
    

    命令结果示例如下,StorageBackendContent在线状态为true,则更新成功。

    NAME              CLAIM                       SN               VENDORNAME   PROVIDERVERSION   ONLINE   AGE
    content-xxxxxxx   huawei-csi/backend-demo     xxxxxxxxxxxxxx   Huawei       4.13.0            true     53d
    

移除存储证书

  1. 执行以下命令将StorageBackendClaim的证书配置清除。

    kubectl patch sbc backend-demo -n huawei-csi --type merge -p '{"spec":{"useCert":false,"certSecret":""}}'
    
  2. 删除证书Secret。

    kubectl delete secret cert-1 -n huawei-csi
    

5 - 删除存储后端


正在执行卷管理操作期间,请勿删除存储后端。

  1. 执行以下命令删除StorageBackendClaim。

    kubectl delete sbc backend-demo -n huawei-csi
    

    删除StorageBackendClaim后,控制器会自动删除关联的StorageBackendContent。

  2. 执行以下命令,确认StorageBackendContent已被删除。

    kubectl get sbct
    

    如果关联的StorageBackendContent不再列出,则删除成功。

  3. 执行以下命令,手动删除关联的ConfigMap和Secret。

    kubectl delete configmap backend-demo -n huawei-csi
    kubectl delete secret backend-demo -n huawei-csi