IBM Cloud Docs
IBM 系统 Block Storage CSI 驱动程序

IBM 系统 Block Storage CSI 驱动程序

Block Storage for Classic IBM Cloud Satellite® 的 CSI 驱动程序基于 IBM 开放式源代码项目,并集成到容器的 IBM 存储编排中。IBM 针对容器的存储编排使企业能够实施现代容器驱动的混合多云环境,该环境可以降低 IT 成本并提高业务敏捷性,同时继续从现有系统中获取价值。

有关完整的发行说明,兼容性,安装和用户信息,请参阅 Block Storage for Classic CSI 驱动程序文档

Satellite 包含的受支持 IBM 存储系统,

  • IBM Spectrum Virtualize 产品系列,包括 IBM SAN Volume Controller (SVC) 和 IBM FlashSystem® 产品系列成员,使用 IBM Spectrum® Virtualize (FlashSystem 5010,5030,5100,5200,7200,9100,9200,9200R)
  • IBM FlashSystem A9000 和 A9000R
  • IBM DS8000 系列

在可以将存储器模板部署到您所在位置的集群之前,请确保通过在控制台中选择 对 Satellite Config 启用集群管理访问权 选项或者在创建集群时包含 --enable-config-admin 选项来设置 Satellite 配置。

不能将 Satellite 存储服务的作用域限定为资源组。 但是,如果要将其他资源 (例如,位置和集群) 限定为资源组,那么需要为帐户中的所有资源添加 Satellite 阅读器和链接管理员角色。

使用 Block Storage for Classic 的先决条件

在将主机分配到您的位置之前,请确保完成所有先决条件和安装步骤。 请勿创建 Kubernetes 集群。

  1. 查看 兼容性和需求文档

  2. 创建 Satellite 位置

在控制台中创建和分配配置

  1. 查看 参数参考

  2. 从 "位置" 控制台,选择要在其中创建存储配置的位置。

  3. 选择 存储器 > 创建存储器配置

  4. 输入配置名称。

  5. 选择存储类型

  6. 选择版本并单击下一步

  7. 如果您选择的 存储器类型 接受定制参数,请在 参数 选项卡上输入这些参数。

  8. 如果您选择的 存储器类型 需要私钥,请在 私钥 选项卡上输入私钥。

  9. 存储类 选项卡上,查看配置所部署的存储类或创建定制存储类。

  10. 分配给服务 选项卡上,选择要将配置分配给的服务。

  11. 单击 完成 以分配存储器配置。

在 CLI 中创建配置

  1. 查看要使用的模板版本的 参数参考

  2. 登录到 IBM Cloud CLI。

    ibmcloud login
    
  3. 列出 Satellite 位置并记下 Managed from 列。

    ibmcloud sat location ls
    
  4. 将 Satellite 位置的 Managed from 区域作为目标。 例如,对于 wdc target us-east。 有关更多信息,请参阅 Satellite 区域

    ibmcloud target -r us-east
    
  5. 如果使用除 default 以外的资源组,请将其作为目标。

    ibmcloud target -g <resource-group>
    
  6. 针对要使用的模板版本,复制以下某个示例命令。 有关该命令的更多信息,请参阅 命令参考 中的 ibmcloud sat storage config create

    用于创建 V 1.10.0 配置的示例命令。

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-system-storage-block-csi-driver --template-version 1.10.0 --param "namespace=NAMESPACE"
    

    用于创建 V 1.11.1 配置的示例命令。

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-system-storage-block-csi-driver --template-version 1.11.1 --param "namespace=NAMESPACE"
    

    用于创建 V 1.11.2 配置的示例命令。

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-system-storage-block-csi-driver --template-version 1.11.2 --param "namespace=NAMESPACE"  --param "secret-name=SECRET-NAME"  --param "secret-management-address=SECRET-MANAGEMENT-ADDRESS"  --param "secret-username=SECRET-USERNAME"  --param "secret-password=SECRET-PASSWORD"
    
  7. 根据要使用的设置定制命令。

  8. 运行命令创建配置。

  9. 验证是否已创建配置。

    ibmcloud sat storage config get --config CONFIG
    

在 API 中创建配置

  1. 生成 API 密钥,然后请求刷新令牌。 有关详细信息,请参阅 使用 API 密钥生成IBM CloudIAM 令牌

  2. 查看要使用的模板版本的 参数参考

  3. 复制以下某个示例请求并替换要使用的变量。

    用于创建 V 1.10.0 配置的示例请求。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"ibm-system-storage-block-csi-driver\", \"storage-template-version\": \"1.10.0\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"NAMESPACE\",\"user-secret-parameters\": }
    

    用于创建 V 1.11.1 配置的示例请求。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"ibm-system-storage-block-csi-driver\", \"storage-template-version\": \"1.11.1\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"NAMESPACE\",\"user-secret-parameters\": }
    

    用于创建 V 1.11.2 配置的示例请求。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"ibm-system-storage-block-csi-driver\", \"storage-template-version\": \"1.11.2\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"NAMESPACE\", { \"entry.name\": \"SECRET-NAME\",\"user-secret-parameters\": { \"entry.name\": \"SECRET-MANAGEMENT-ADDRESS\",{ \"entry.name\": \"SECRET-USERNAME\",{ \"entry.name\": \"SECRET-PASSWORD\",}
    

在 CLI 中创建任务

  1. 列出存储配置,并记下要分配给集群的存储配置。

    ibmcloud sat storage config ls
    
  2. 获取要向其分配存储器的集群,集群组或服务的标识。

    要确保集群已向 Satellite 配置注册或要创建组,请参阅 设置集群以与 Satellite 配置配合使用

    用于列出集群组的示例命令。

    ibmcloud sat group ls
    

    用于列出集群的示例命令。

    ibmcloud oc cluster ls --provider satellite
    

    用于列出 Satellite 服务的示例命令。

    ibmcloud sat service ls --location <location>
    
  3. 将存储器配置分配给先前检索的集群,组或服务。 有关更多信息,请参阅 ibmcloud sat storage assignment create 命令

    用于将配置分配给集群组的示例命令。

    ibmcloud sat storage assignment create --group GROUP --config CONFIG --name NAME
    

    用于将配置分配给集群的示例命令。

    ibmcloud sat storage assignment create --cluster CLUSTER --config CONFIG --name NAME
    

    用于将配置分配给服务集群的示例命令。

    ibmcloud sat storage assignment create --service-cluster-id CLUSTER --config CONFIG --name NAME
    
  4. 确认任务已创建。

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    

在 API 中创建存储器分配

  1. 复制以下某个示例请求。

    用于将 配置分配给集群的示例请求。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignmentByCluster" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"CLUSTER-ID\", \"controller\": \"LOCATION-ID\", \"name\": \"ASSIGNMENT-NAME\"}"
    

    请求 将配置分配给集群组的示例。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"string\", \"groups\": [ \"CLUSTER-GROUP\" ], \"name\": \"ASSIGNMENT-NAME\"}"
    
  2. 将变量替换为详细信息并运行请求。

  3. 通过列出分配来验证是否已创建分配。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignments" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

在控制台中更新存储器分配

您可以使用 Satellite 控制台 对分配应用最新补丁更新。

  1. Satellite 控制台中的“位置”页面,选择您的位置。

  2. 单击 存储器 选项卡以查看配置。

  3. 单击要更新的配置。

  4. 单击信息 信息 (i) 图标以应用最新修订版或补丁。

  5. 可选: 为存储器分配启用自动补丁更新。 启用自动补丁更新可确保分配始终具有最新的安全修订。

如果启用自动补丁更新,那么仍必须手动应用主要更新。

在 CLI 中手动升级分配

升级分配以使用最新的存储器模板修订版。

  1. 列出 Satellite 存储分配,记录要升级的 Satellite 分配。

    ibmcloud sat storage assignment ls
    
  2. 列出 Satellite 存储模板以查看最新的可用版本。

    ibmcloud sat storage template ls
    
  3. 升级 Satellite 分配。

    用于升级分配的示例命令。

    ibmcloud sat storage assignment upgrade --assignment ASSIGNMENT
    

在 CLI 中为配置和分配启用自动补丁更新

您可以使用 sat storage assignment autopatch enable CLI 为分配启用自动补丁更新。 启用自动补丁更新将自动应用最新的存储模板修订 (补丁)。 您仍必须手动应用主要更新。

  1. 列出 Satellite 存储配置。 记下配置 ID。

    ibmcloud sat storage assignment ls
    
  2. 运行以下某个示例命令以对配置及其关联的分配启用自动补丁更新。 输入您在上一步中获取的配置 ID。

    用于对分配启用自动补丁更新的示例命令。

    ibmcloud sat storage assignment autopatch enable --config CONFIG  (--all | --assignment ASSIGNMENT-ID [--assignment ASSIGNMENT-ID])
    

    用于对给定配置下的所有存储器分配启用自动补丁更新的示例命令。

    ibmcloud sat storage assignment autopatch enable --config CONFIG --all
    

    用于禁用特定配置下所有分配的自动补丁更新的示例命令。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --all
    

    用于禁用单个分配和特定配置的自动补丁更新的示例命令。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID
    

    用于对多个分配和特定配置禁用自动补丁更新的示例命令。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID --assignment ASSIGNMENT-ID
    

在 API 中升级配置和分配

您可以使用 /v2/storage/satellite/updateAssignment API 通过新的集群或集群组更新分配。 将 updateConfigVersion 设置为 true 以应用修订更新。

  1. 复制以下示例请求,并替换要更新的集群组和分配的变量。

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/updateAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"groups\": [ \"CLUSTER-GROUPS\" ], \"name\": \"ASSIGNMENT-NAME\", \"updateConfigVersion\": true, \"uuid\": \"ASSIGNMENT-ID\"}"
    
  2. 运行请求。

  3. 获取分配的详细信息以验证更新。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

在 API 中为分配启用自动补丁更新

您可以使用 /v2/storage/satellite/setAssignmentAutoupgrade API 为分配启用自动补丁更新。 启用自动补丁更新将自动应用最新的存储模板修订 (补丁)。 您仍必须手动应用主要更新。

  1. 复制以下示例请求,并替换要更新的集群组和分配的变量。

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/setAssignmentAutoupgrade" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d { "config": "string", "controller": "string", "autopatch": boolean,"assignment" : { "all": boolean, "uuid": ["string", "string", ...], } }
    
  2. 运行请求。

  3. 获取分配的详细信息以验证升级。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

部署使用 Block Storage for Classic 的应用程序

您可以使用 ibm-system-storage-block-csi-driver 来创建可在集群工作负载中使用的 PVC。

  1. 创建包含 Block Storage for Classic 凭证的 Kubernetes 私钥配置文件。
    kind: Secret
    apiVersion: v1
    metadata:
      name:  demo-secret
      namespace: default
    type: Opaque
    stringData:
      management_address: demo-management-address # Example: baremetal-cluster.xiv.ibm.com
      username: demo-username                     
    data:
      password: AAAA1AAA
    
  2. 在集群中创建私钥。
    oc apply -f <secret.yaml>
    
  3. 创建使用 Block Storage for Classic 驱动程序的存储类。
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: demo-storageclass
    provisioner: block.csi.ibm.com
    parameters:
      SpaceEfficiency: deduplicated   # Optional.
      pool: demo-pool
      csi.storage.k8s.io/provisioner-secret-name: demo-secret
      csi.storage.k8s.io/provisioner-secret-namespace: default
      csi.storage.k8s.io/controller-publish-secret-name: demo-secret
      csi.storage.k8s.io/controller-publish-secret-namespace: default
      csi.storage.k8s.io/controller-expand-secret-name: demo-secret
      csi.storage.k8s.io/controller-expand-secret-namespace: default
      csi.storage.k8s.io/fstype: xfs   # Optional. Values ext4\xfs. The default is ext4.
      volume_name_prefix: demoPVC      # Optional
    allowVolumeExpansion: true
    
  4. 在集群中创建存储类。
    oc apply -f sc.yaml
    
  5. 验证存储类是否已创建。
    oc get sc
    
  6. 创建引用先前创建的存储类的 PVC。
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: demo-pvc-file
    spec:
      volumeMode: Filesystem
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: demo-storageclass
    
  7. 在集群中创建 PVC。
    oc apply -f pvc.yaml
    
  8. 验证是否已创建 PVC 并且状态为 Bound
    oc get pvc
    
  9. 为安装您创建的 PVC 的有状态集创建 YAML 配置文件。
    kind: StatefulSet
    apiVersion: apps/v1
    metadata:
      name: demo-statefulset-file-system
    spec:
      selector:
        matchLabels:
          app: demo-statefulset
      serviceName: demo-statefulset
      replicas: 1
      template:
        metadata:
          labels:
            app: demo-statefulset
        spec:
          containers:
          - name: demo-container
            image: registry.access.redhat.com/ubi8/ubi:latest
            command: [ "/bin/sh", "-c", "--" ]
            args: [ "while true; do sleep 30; done;" ]
            volumeMounts:
              - name: demo-volume-file-system
                mountPath: "/data"
          volumes:
          - name: demo-volume-file-system
            persistentVolumeClaim:
              claimName: demo-pvc-file
    
  10. 在群集中创建 pod。
    oc apply -f <stateful-set>.yaml
    
  11. 验证 pod 是否已部署。 请注意,应用程序进入 Running 状态可能需要几分钟时间。
    oc get pods
    
    示例输出
    NAME                                READY   STATUS    RESTARTS   AGE
    demo-statefulset-file-system-0       1/1     Running   0          2m58s
    
  12. 验证应用程序是否可以写入 IBM Block Storage 实例。
    1. 登录到 pod。
      oc exec demo-statefulset-file-system-0 -it bash
      
    2. 切换到 /data 目录,编写 test.txt 文件,并查看 test.txt 文件的内容以确认应用程序可以将数据写入持久存储器。
      cd data && echo "Testing" >> test.txt && cat test.txt
      
      示例输出
      Testing
      
    3. 退出 pod。
      exit
      

参数参考

1.10.0 参数参考

1.1.10.0参数参考
显示名称 CLI 选项 Type 描述 必需? 缺省值
名称空间 namespace 配置 要在其中创建部署的名称空间。 default

1.11.1 参数参考

1.1.11.1参数参考
显示名称 CLI 选项 Type 描述 必需? 缺省值
名称空间 namespace 配置 要在其中创建部署的名称空间。 default

1.11.2 参数参考

1.1.11.2参数参考
显示名称 CLI 选项 Type 描述 必需? 缺省值
名称空间 namespace 配置 要在其中创建部署的名称空间。 default
私钥名称 secret-name 配置 要创建的私钥的名称。 不适用
密钥管理地址 secret-management-address 私钥 管理服务器的地址。 这可以是 IP 地址或 URL。 例如:example-cluster.xiv.ibm.com 不适用
私钥用户名 secret-username 私钥 用于向管理服务器认证的用户名。 不适用
密钥密码 secret-password 私钥 用于向管理服务器认证的密码。 不适用

获取 Block Storage for Classic 的帮助和支持

  1. 查看 Block Storage for Classic 文档中的常见问题解答。
  2. 查看 故障诊断文档 以进行故障诊断并解决常见问题。
  3. 通过转至 "状态" 页面,检查 IBM Cloud 平台和资源的状态。
  4. 查看 Stack Overflow 以了解其他用户是否迂到了相同的问题。 使用 ibm-cloud 标记任何问题。
  5. 如果迂到与 Block Storage for Classic 有关的问题,请向 IBM Cloud® 支持提交支持请求。