IBM Cloud Docs
VMware Block Container Storage Interface (CSI) 驱动程序

VMware Block Container Storage Interface (CSI) 驱动程序

VMware Container Storage Interface (CSI) 驱动程序 允许您管理 VMware 块数据卷的生命周期。

先决条件

必须先满足以下先决条件,然后才能创建 VMware 块存储器配置。

  1. 验证您是否正在运行 vSphere V 6.7U3 或更高版本。
  2. 验证虚拟机硬件版本是否为 V15 或更高版本。
  3. 验证主节点是否可以与 vCenter 管理界面进行通信。
  4. 在所有节点上禁用交换。
  5. 在所有节点虚拟机上启用磁盘 UUID。
  6. 在 vSphere 环境中部署 vSAN。 有关更多信息,请参阅 vSAN 文档

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

不能将 Satellite 存储服务的作用域限定为资源组。 但是,如果要将其他资源 (例如,位置和集群) 限定为资源组,那么需要为帐户中的所有资源添加 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 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"
    
  7. 根据要使用的设置定制命令。

  8. 运行命令创建配置。

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

    ibmcloud sat storage config get --config CONFIG
    

在 API 中创建配置

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

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

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

    用于创建 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 中创建任务

  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"
    

部署使用 VMware 的应用程序

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

  1. 创建引用先前创建的存储类的 PVC。

        kind: PersistentVolumeClaim
        apiVersion: v1
        metadata:
            name: podpvc
        spec:
            accessModes:
             - ReadWriteOnce
            storageClassName: sat-vsphere-vsan-block-metro
            resources:
                requests:
                storage: 10Gi
    
  2. 在集群中创建 PVC。

    oc apply -f podpvc.yaml
    
  3. 为安装您创建的 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
    
    
  4. 在群集中创建 pod。

    oc apply -f mypvc.yaml
    
  5. 验证 pod 是否已部署。 请注意,应用程序进入 Running 状态可能需要几分钟时间。

    oc get pods
    
    NAME                                READY   STATUS    RESTARTS   AGE
    my-pvc                              1/1     Running   0          2m58s
    
  6. 通过登录到 pod,验证应用程序是否可以写入块存储卷。

    oc exec -it web-server /bin/bash
    
  7. 查看 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
    
  8. 退出 pod。

    exit
    

从应用程序中除去 VMWare 存储器

如果不再需要 VMware 配置,那么可以从集群中除去应用程序,PVC,PV 和分配。

  1. 列出 PVC 并记下要除去的 PVC 的名称。

    oc get pvc
    
  2. 除去安装了 PVC 的所有 pod。

    1. 列出当前安装要删除的 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
      
    2. 除去使用 PVC 的 pod。 如果 pod 是部署或 statefulset 的一部分,请除去部署或 statefulset。

      oc delete pod <pod_name>
      
      oc delete deployment <deployment_name>
      
      oc delete statefulset <statefulset_name>
      
    3. 验证是否已除去 pod,部署或 statefulset。

      oc get pods
      
      oc get deployments
      
      oc get statefulset
      
  3. 删除 PVC。

    oc delete pvc <pvc_name>
    
  4. 验证您的 PV 是否已自动除去。

    oc get pv
    

从集群中除去 VMware 存储器配置

如果不再计划在集群中使用 VMware,那么可以使用 CLI 从存储配置取消分配集群。

除去存储器配置将从所有分配的集群中除去驱动程序。 不会除去 PVC,PV 和数据。 但是,在重新将驱动程序安装到集群中之前,您可能无法访问数据。

使用控制台除去 VMWare 存储器配置

  1. 从 Satellite 存储仪表板中,选择要删除的存储配置。
  2. 选择 操作 > 删除
  3. 输入存储器配置的名称。
  4. 选择删除

使用命令行除去 VMWare 存储器配置

  1. 列出存储器分配并查找用于集群的存储分配。

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    
  2. 除去分配。 除去分配后,将从属于存储分配的所有集群中除去驱动程序 pod 和存储类。

    ibmcloud sat storage assignment rm --assignment <assignment_ID>
    
  3. 验证是否已从集群中除去驱动程序。

    1. 列出集群中的存储类,并验证是否已除去这些存储类。

      oc get sc
      
    2. 列出 kube-system 名称空间中的 pod,并验证是否已除去存储驱动程序 pod。

      oc get pods -n kube-system | grep vsphere
      
  4. 可选: 除去存储器配置。

    1. 列出存储配置。

      ibmcloud sat storage config ls
      
    2. 除去存储器配置。

      ibmcloud sat storage config rm --config <config_name>
      

参数参考

2.5.1 参数参考

表 1. 2.5.1 参数参考
显示名称 CLI 选项 类型 描述 缺省值
vCenter 用户名 vcenter-username 私钥 vCenter 用户名。 必须指定用户名以及域名。 例如:Administrator@vsphere.local 不适用
vCenter 密码 vcenter-password 私钥 vCenter 服务器用户密码。 不适用
不安全的连接 insecure-flag 配置 包含 insecure-flagtrue 指示您要包含标志,该标志使用自签名证书进行登录。false 指示您使用安全连接。 如果选择 false,则必须提供 SSL 指纹。 false
vCenter 主机 host 配置 vCenter 服务器 IP 地址。 不适用
vCenter 数据中心 datacenters 配置 列出存在主机 VM 的所有数据中心路径,以逗号分隔。 提供位于根目录的数据中心的名称。 将其放在文件夹中时,需要将路径指定为 folder/data-center-name 不适用
SSL 证书指纹 thumbprint 私钥 用于与 VC 建立安全连接的 SSL 指纹。 不适用

2.7.0 参数参考

表 2. 2.7.0 参数参考
显示名称 CLI 选项 类型 描述 缺省值
vCenter 用户名 vcenter-username 私钥 vCenter 用户名。 必须指定用户名以及域名。 例如:Administrator@vsphere.local 不适用
vCenter 密码 vcenter-password 私钥 vCenter 服务器用户密码。 不适用
不安全的连接 insecure-flag 配置 包含 insecure-flagtrue 指示您要包含标志,该标志使用自签名证书进行登录。false 指示您使用安全连接。 如果选择 false,则必须提供 SSL 指纹。 false
vCenter 主机 host 配置 vCenter 服务器 IP 地址。 不适用
vCenter 数据中心 datacenters 配置 列出存在主机 VM 的所有数据中心路径,以逗号分隔。 提供位于根目录的数据中心的名称。 将其放在文件夹中时,需要将路径指定为 folder/data-center-name 不适用
SSL 证书指纹 thumbprint 私钥 用于与 VC 建立安全连接的 SSL 指纹。 不适用

获取 VMWare 的帮助和支持

如果迂到 VMware 问题,请向 VMware 支持人员提交支持请求。