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 集群。
-
查看 兼容性和需求文档。
在控制台中创建和分配配置
-
查看 参数参考。
-
从 "位置" 控制台,选择要在其中创建存储配置的位置。
-
选择 存储器 > 创建存储器配置
-
输入配置名称。
-
选择存储类型。
-
选择版本并单击下一步
-
如果您选择的 存储器类型 接受定制参数,请在 参数 选项卡上输入这些参数。
-
如果您选择的 存储器类型 需要私钥,请在 私钥 选项卡上输入私钥。
-
在 存储类 选项卡上,查看配置所部署的存储类或创建定制存储类。
-
在 分配给服务 选项卡上,选择要将配置分配给的服务。
-
单击 完成 以分配存储器配置。
在 CLI 中创建配置
-
查看要使用的模板版本的 参数参考。
-
登录到 IBM Cloud CLI。
ibmcloud login
-
列出 Satellite 位置并记下
Managed from
列。ibmcloud sat location ls
-
将 Satellite 位置的
Managed from
区域作为目标。 例如,对于wdc
targetus-east
。 有关更多信息,请参阅 Satellite 区域。ibmcloud target -r us-east
-
如果使用除
default
以外的资源组,请将其作为目标。ibmcloud target -g <resource-group>
-
针对要使用的模板版本,复制以下某个示例命令。 有关该命令的更多信息,请参阅 命令参考 中的
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"
-
根据要使用的设置定制命令。
-
运行命令创建配置。
-
验证是否已创建配置。
ibmcloud sat storage config get --config CONFIG
在 API 中创建配置
-
生成 API 密钥,然后请求刷新令牌。 有关详细信息,请参阅 使用 API 密钥生成IBM CloudIAM 令牌。
-
查看要使用的模板版本的 参数参考。
-
复制以下某个示例请求并替换要使用的变量。
用于创建 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 中创建任务
-
列出存储配置,并记下要分配给集群的存储配置。
ibmcloud sat storage config ls
-
获取要向其分配存储器的集群,集群组或服务的标识。
要确保集群已向 Satellite 配置注册或要创建组,请参阅 设置集群以与 Satellite 配置配合使用。
用于列出集群组的示例命令。
ibmcloud sat group ls
用于列出集群的示例命令。
ibmcloud oc cluster ls --provider satellite
用于列出 Satellite 服务的示例命令。
ibmcloud sat service ls --location <location>
-
将存储器配置分配给先前检索的集群,组或服务。 有关更多信息,请参阅
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
-
确认任务已创建。
ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
在 API 中创建存储器分配
-
复制以下某个示例请求。
用于将 配置分配给集群的示例请求。
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\"}"
-
将变量替换为详细信息并运行请求。
-
通过列出分配来验证是否已创建分配。
curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignments" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
在控制台中更新存储器分配
您可以使用 Satellite 控制台 对分配应用最新补丁更新。
-
从 Satellite 控制台中的“位置”页面,选择您的位置。
-
单击 存储器 选项卡以查看配置。
-
单击要更新的配置。
-
单击信息 信息 (i) 图标以应用最新修订版或补丁。
-
可选: 为存储器分配启用自动补丁更新。 启用自动补丁更新可确保分配始终具有最新的安全修订。
如果启用自动补丁更新,那么仍必须手动应用主要更新。
在 CLI 中手动升级分配
升级分配以使用最新的存储器模板修订版。
-
列出 Satellite 存储分配,记录要升级的 Satellite 分配。
ibmcloud sat storage assignment ls
-
列出 Satellite 存储模板以查看最新的可用版本。
ibmcloud sat storage template ls
-
升级 Satellite 分配。
用于升级分配的示例命令。
ibmcloud sat storage assignment upgrade --assignment ASSIGNMENT
在 CLI 中为配置和分配启用自动补丁更新
您可以使用 sat storage assignment autopatch enable
CLI 为分配启用自动补丁更新。 启用自动补丁更新将自动应用最新的存储模板修订 (补丁)。 您仍必须手动应用主要更新。
-
列出 Satellite 存储配置。 记下配置 ID。
ibmcloud sat storage assignment ls
-
运行以下某个示例命令以对配置及其关联的分配启用自动补丁更新。 输入您在上一步中获取的配置 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
以应用修订更新。
-
复制以下示例请求,并替换要更新的集群组和分配的变量。
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\"}"
-
运行请求。
-
获取分配的详细信息以验证更新。
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 为分配启用自动补丁更新。 启用自动补丁更新将自动应用最新的存储模板修订 (补丁)。 您仍必须手动应用主要更新。
-
复制以下示例请求,并替换要更新的集群组和分配的变量。
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", ...], } }
-
运行请求。
-
获取分配的详细信息以验证升级。
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。
- 创建包含 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
- 在集群中创建私钥。
oc apply -f <secret.yaml>
- 创建使用 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
- 在集群中创建存储类。
oc apply -f sc.yaml
- 验证存储类是否已创建。
oc get sc
- 创建引用先前创建的存储类的 PVC。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: demo-pvc-file spec: volumeMode: Filesystem accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: demo-storageclass
- 在集群中创建 PVC。
oc apply -f pvc.yaml
- 验证是否已创建 PVC 并且状态为
Bound
。oc get pvc
- 为安装您创建的 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
- 在群集中创建 pod。
oc apply -f <stateful-set>.yaml
- 验证 pod 是否已部署。 请注意,应用程序进入
Running
状态可能需要几分钟时间。
示例输出oc get pods
NAME READY STATUS RESTARTS AGE demo-statefulset-file-system-0 1/1 Running 0 2m58s
- 验证应用程序是否可以写入 IBM Block Storage 实例。
- 登录到 pod。
oc exec demo-statefulset-file-system-0 -it bash
- 切换到
/data
目录,编写test.txt
文件,并查看test.txt
文件的内容以确认应用程序可以将数据写入持久存储器。
示例输出cd data && echo "Testing" >> test.txt && cat test.txt
Testing
- 退出 pod。
exit
- 登录到 pod。
参数参考
1.10.0 参数参考
显示名称 | CLI 选项 | Type | 描述 | 必需? | 缺省值 |
---|---|---|---|---|---|
名称空间 | namespace |
配置 | 要在其中创建部署的名称空间。 | 是 | default |
1.11.1 参数参考
显示名称 | CLI 选项 | Type | 描述 | 必需? | 缺省值 |
---|---|---|---|---|---|
名称空间 | namespace |
配置 | 要在其中创建部署的名称空间。 | 是 | default |
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 的帮助和支持
- 查看 Block Storage for Classic 文档中的常见问题解答。
- 查看 故障诊断文档 以进行故障诊断并解决常见问题。
- 通过转至 "状态" 页面,检查 IBM Cloud 平台和资源的状态。
- 查看 Stack Overflow 以了解其他用户是否迂到了相同的问题。 使用
ibm-cloud
标记任何问题。 - 如果迂到与 Block Storage for Classic 有关的问题,请向 IBM Cloud® 支持提交支持请求。