VMware Block Container Storage Interface (CSI) 驱动程序
VMware Container Storage Interface (CSI) 驱动程序 允许您管理 VMware 块数据卷的生命周期。
先决条件
必须先满足以下先决条件,然后才能创建 VMware 块存储器配置。
- 验证您是否正在运行 vSphere V 6.7U3 或更高版本。
- 验证虚拟机硬件版本是否为 V15 或更高版本。
- 验证主节点是否可以与 vCenter 管理界面进行通信。
- 在所有节点上禁用交换。
- 在所有节点虚拟机上启用磁盘 UUID。
- 在 vSphere 环境中部署 vSAN。 有关更多信息,请参阅 vSAN 文档。
在可以将存储器模板部署到您所在位置的集群之前,请确保通过在控制台中选择 对 Satellite Config 启用集群管理访问权 选项或者在创建集群时包含 --enable-config-admin
选项来设置 Satellite 配置。
不能将 Satellite 存储服务的作用域限定为资源组。 但是,如果要将其他资源 (例如,位置和集群) 限定为资源组,那么需要为帐户中的所有资源添加 Satellite 阅读器和链接管理员角色。
在控制台中创建和分配配置
-
查看 参数参考。
-
从 "位置" 控制台,选择要在其中创建存储配置的位置。
-
选择 存储器 > 创建存储器配置
-
输入配置名称。
-
选择存储类型。
-
选择版本并单击下一步
-
如果您选择的 存储器类型 接受定制参数,请在 参数 选项卡上输入这些参数。
-
如果您选择的 存储器类型 需要私钥,请在 私钥 选项卡上输入私钥。
-
在 存储类 选项卡上,查看配置所部署的存储类或创建定制存储类。
-
在 分配给服务 选项卡上,选择要将配置分配给的服务。
-
单击 完成 以分配存储器配置。
在 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 2.5.1 配置的示例命令。
ibmcloud sat storage config create --location LOCATION --name NAME --template-name vsphere-csi-driver --template-version 2.5.1 --param "vcenter-username=VCENTER-USERNAME" --param "vcenter-password=VCENTER-PASSWORD" --param "insecure-flag=INSECURE-FLAG" --param "host=HOST" --param "datacenters=DATACENTERS" --param "thumbprint=THUMBPRINT"
用于创建 V 2.7.0 配置的示例命令。
ibmcloud sat storage config create --location LOCATION --name NAME --template-name vsphere-csi-driver --template-version 2.7.0 --param "vcenter-username=VCENTER-USERNAME" --param "vcenter-password=VCENTER-PASSWORD" --param "insecure-flag=INSECURE-FLAG" --param "host=HOST" --param "datacenters=DATACENTERS" --param "thumbprint=THUMBPRINT"
-
根据要使用的设置定制命令。
-
运行命令创建配置。
-
验证是否已创建配置。
ibmcloud sat storage config get --config CONFIG
在 API 中创建配置
-
生成 API 密钥,然后请求刷新令牌。 有关详细信息,请参阅 使用 API 密钥生成 IBM Cloud IAM 令牌。
-
查看要使用的模板版本的 参数参考。
-
复制以下某个示例请求并替换要使用的变量。
用于创建 V 2.5.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\": \"vsphere-csi-driver\", \"storage-template-version\": \"2.5.1\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"INSECURE-FLAG\", { \"entry.name\": \"HOST\", { \"entry.name\": \"DATACENTERS\",\"user-secret-parameters\": { \"entry.name\": \"VCENTER-USERNAME\",{ \"entry.name\": \"VCENTER-PASSWORD\",{ \"entry.name\": \"THUMBPRINT\",}
用于创建 V 2.7.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\": \"vsphere-csi-driver\", \"storage-template-version\": \"2.7.0\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"INSECURE-FLAG\", { \"entry.name\": \"HOST\", { \"entry.name\": \"DATACENTERS\",\"user-secret-parameters\": { \"entry.name\": \"VCENTER-USERNAME\",{ \"entry.name\": \"VCENTER-PASSWORD\",{ \"entry.name\": \"THUMBPRINT\",}
在 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"
部署使用 VMware 的应用程序
您可以使用 vmware-csi-driver
来创建可在集群工作负载中使用的 PVC。
-
创建引用先前创建的存储类的 PVC。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: sat-vsphere-vsan-block-metro resources: requests: storage: 10Gi
-
在集群中创建 PVC。
oc apply -f podpvc.yaml
-
为安装您创建的 PVC 的 pod 创建 YAML 配置文件。
apiVersion: v1 kind: Pod metadata: name: web-server spec: containers: - name: #web-server image: nginx command: - "/bin/sh" - "-c" - while true; do echo $(date) >> /mnt/vmwaredisk/outfile; sleep 1; done volumeMounts: mountPath: /mnt/vmwaredisk name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: podpvc readOnly: false
-
在群集中创建 pod。
oc apply -f mypvc.yaml
-
验证 pod 是否已部署。 请注意,应用程序进入
Running
状态可能需要几分钟时间。oc get pods
NAME READY STATUS RESTARTS AGE my-pvc 1/1 Running 0 2m58s
-
通过登录到 pod,验证应用程序是否可以写入块存储卷。
oc exec -it web-server /bin/bash
-
查看
outfile
文件的内容以确认应用程序可以将数据写入持久存储器。cat outfile
示例输出
Fri Jul 16 07:49:39 EDT 2021 Fri Jul 16 07:49:39 EDT 2021 Fri Jul 16 07:49:39 EDT 2021
-
退出 pod。
exit
从应用程序中除去 VMWare 存储器
如果不再需要 VMware 配置,那么可以从集群中除去应用程序,PVC,PV 和分配。
-
列出 PVC 并记下要除去的 PVC 的名称。
oc get pvc
-
除去安装了 PVC 的所有 pod。
-
列出当前安装要删除的 PVC 的所有 pod。 如果未返回任何 pod,那么您当前没有任何使用 PVC 的 pod。
oc get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
示例输出
NAME READY STATUS RESTARTS AGE web-server 1/1 Running 0 55s
-
除去使用 PVC 的 pod。 如果 pod 是部署或 statefulset 的一部分,请除去部署或 statefulset。
oc delete pod <pod_name>
oc delete deployment <deployment_name>
oc delete statefulset <statefulset_name>
-
验证是否已除去 pod,部署或 statefulset。
oc get pods
oc get deployments
oc get statefulset
-
-
删除 PVC。
oc delete pvc <pvc_name>
-
验证您的 PV 是否已自动除去。
oc get pv
从集群中除去 VMware 存储器配置
如果不再计划在集群中使用 VMware,那么可以使用 CLI 从存储配置取消分配集群。
除去存储器配置将从所有分配的集群中除去驱动程序。 不会除去 PVC,PV 和数据。 但是,在重新将驱动程序安装到集群中之前,您可能无法访问数据。
使用控制台除去 VMWare 存储器配置
- 从 Satellite 存储仪表板中,选择要删除的存储配置。
- 选择 操作 > 删除
- 输入存储器配置的名称。
- 选择删除。
使用命令行除去 VMWare 存储器配置
-
列出存储器分配并查找用于集群的存储分配。
ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
-
除去分配。 除去分配后,将从属于存储分配的所有集群中除去驱动程序 pod 和存储类。
ibmcloud sat storage assignment rm --assignment <assignment_ID>
-
验证是否已从集群中除去驱动程序。
-
列出集群中的存储类,并验证是否已除去这些存储类。
oc get sc
-
列出
kube-system
名称空间中的 pod,并验证是否已除去存储驱动程序 pod。oc get pods -n kube-system | grep vsphere
-
-
可选: 除去存储器配置。
-
列出存储配置。
ibmcloud sat storage config ls
-
除去存储器配置。
ibmcloud sat storage config rm --config <config_name>
-
参数参考
2.5.1 参数参考
显示名称 | CLI 选项 | 类型 | 描述 | 缺省值 |
---|---|---|---|---|
vCenter 用户名 | vcenter-username |
私钥 | vCenter 用户名。 必须指定用户名以及域名。 例如:Administrator@vsphere.local 。 |
不适用 |
vCenter 密码 | vcenter-password |
私钥 | vCenter 服务器用户密码。 | 不适用 |
不安全的连接 | insecure-flag |
配置 | 包含 insecure-flag 。true 指示您要包含标志,该标志使用自签名证书进行登录。false 指示您使用安全连接。 如果选择 false ,则必须提供 SSL 指纹。 |
false |
vCenter 主机 | host |
配置 | vCenter 服务器 IP 地址。 | 不适用 |
vCenter 数据中心 | datacenters |
配置 | 列出存在主机 VM 的所有数据中心路径,以逗号分隔。 提供位于根目录的数据中心的名称。 将其放在文件夹中时,需要将路径指定为 folder/data-center-name | 不适用 |
SSL 证书指纹 | thumbprint |
私钥 | 用于与 VC 建立安全连接的 SSL 指纹。 | 不适用 |
2.7.0 参数参考
显示名称 | CLI 选项 | 类型 | 描述 | 缺省值 |
---|---|---|---|---|
vCenter 用户名 | vcenter-username |
私钥 | vCenter 用户名。 必须指定用户名以及域名。 例如:Administrator@vsphere.local 。 |
不适用 |
vCenter 密码 | vcenter-password |
私钥 | vCenter 服务器用户密码。 | 不适用 |
不安全的连接 | insecure-flag |
配置 | 包含 insecure-flag 。true 指示您要包含标志,该标志使用自签名证书进行登录。false 指示您使用安全连接。 如果选择 false ,则必须提供 SSL 指纹。 |
false |
vCenter 主机 | host |
配置 | vCenter 服务器 IP 地址。 | 不适用 |
vCenter 数据中心 | datacenters |
配置 | 列出存在主机 VM 的所有数据中心路径,以逗号分隔。 提供位于根目录的数据中心的名称。 将其放在文件夹中时,需要将路径指定为 folder/data-center-name | 不适用 |
SSL 证书指纹 | thumbprint |
私钥 | 用于与 VC 建立安全连接的 SSL 指纹。 | 不适用 |
获取 VMWare 的帮助和支持
如果迂到 VMware 问题,请向 VMware 支持人员提交支持请求。