通过Helm配置存储拓扑感知

操作步骤

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

  2. 进入Helm工程的目录下,如果无法找到之前的Helm工程,则将组件包中的helm目录拷贝到master节点的任意目录下,组件包路径请参考表 软件包组件描述

  3. 进入后端服务配置目录/examples/backend/下,备份backend.yaml文件

    cp backend.yaml backend.yaml.bak
    
  4. 执行vi backend.yaml命令打开文件,按需求配置拓扑感知,示例如下所示。修改完成后,按Esc,并输入 :wq!,保存修改。

    storage: "oceanstor-san"
    name: "dorado-iscsi-155"
    namespace: "huawei-csi"
    urls:
      - "https://192.168.129.155:8088"
    pools:
      - "StoragePool001"
    parameters:
      protocol: "iscsi"
      portals:
        - "10.10.30.20"
        - "10.10.30.21"
    supportedTopologies:
      - { "topology.kubernetes.io/region": "China-west", "topology.kubernetes.io/zone": "ChengDu" }
      - { "topology.kubernetes.io/region": "China-south","topology.kubernetes.io/zone": "ShenZhen" }
    maxClientThreads: "30"
    
  5. 执行以下命令删除待修改存储后端,其中“dorado-iscsi-155”为存储后端名称。

    oceanctl delete backend dorado-iscsi-155 -n huawei-csi
    
  6. 执行以下命令创建存储后端。

    oceanctl create backend -f ../examples/backend/backend.yaml -i yaml
    

    根据命令提示输入存储用户名和密码。

    Please enter this backend user name:admin
    Please enter this backend password:
    
  7. 执行vi StorageClass.yaml命令,修改yaml文件。按IInsert进入编辑状态,在yaml文件下增加相关参数,详细参数说明请参见表 参数说明。修改完成后,按Esc,并输入 :wq! ,保存修改。

    在StorageClass.yaml文件中添加以下配置项。拓扑

    • 示例1: 在StorageClass中配置zone和region信息

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: example-storageclass
      provisioner: csi.huawei.com
      parameters:
        volumeType: lun
        allocType: thin
      volumeBindingMode: WaitForFirstConsumer
      allowedTopologies:
      - matchLabelExpressions:
        - key: topology.kubernetes.io/zone
          values:
          - ChengDu
        - key: topology.kubernetes.io/region
          values:
          - China-west
      
    • 示例2: 在StorageClass中配置协议信息

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: protocol-example-storageclass
      provisioner: csi.huawei.com
      parameters:
        volumeType: lun
        allocType: thin
      volumeBindingMode: WaitForFirstConsumer
      allowedTopologies:
      - matchLabelExpressions:
        - key: topology.kubernetes.io/protocol.iscsi
          values:
          - csi.huawei.com
      

    表 1 参数说明

    参数名

    参数描述

    备注

    volumeBindingMode

    PersistentVolume绑定方式,用于控制何时进行PersistentVolume动态资源调配和绑定。

    可配置“WaitForFirstConsumer”“Immediate”

    “WaitForFirstConsumer”:表示延迟PersistentVolume的绑定和调配,直到创建使用PVC的Pod。

    “Immediate”:表示创建PVC后,立即发生PersistentVolume绑定和调配。

    allowedTopologies.matchLabelExpressions

    拓扑信息标签,用于过滤CSI后端和Kubernetes节点。如果匹配失败,会导致PVC或Pod无法创建。

    配置时需要同时按照固定格式配置“key”“value”.

    “key”:可支持配置“topology.kubernetes.io/zone”“topology.kubernetes.io/region”

    topology.kubernetes.io/protocol.<protocol>, 其中<protocol>为协议类型, 例如:iscsi, fc, nfs等。

    “value”

    “key”如果是“topology.kubernetes.io/zone”“topology.kubernetes.io/region”“value”值需要和前提条件中设置的拓扑标签保持一致。

    “key”如果是topology.kubernetes.io/protocol.<protocol>“value”值固定为“csi.huawei.com”

  8. 执行以下命令,基于该yaml文件创建StorageClass。

    kubectl create -f StorgeClass.yaml
    
  9. 使用该StorageClass创建具有拓扑能力的PVC,详细操作请参考动态卷供应PVC参数说明