本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

将 VMware vSphere 从树内迁移到树外

Kubernetes 正在逐步停止维护树内的云提供商。VMware vSphere 有一个树外云提供商,可以通过安装 vSphere 云提供商和云存储插件来使用。

本页面介绍如何从树内 vSphere 云提供商迁移到树外,并在迁移后管理现有虚拟机。

它遵循官方 vSphere 迁移文档 中提供的步骤,并提供在 Rancher 中执行的步骤。

云配置格式限制

由于 vSphere 云存储接口 (CSI) 中存在的错误,使用以下云配置格式创建的现有卷将无法迁移。

如果云配置中对数据存储和资源池的路径采用此格式,vsphere CSI 驱动程序将无法识别:

default-datastore: </datacenter>/datastore/<default-datastore-name>
resourcepool-path: "</datacenter>/host/<cluster-name>/Resources/<resource-pool-name>"

使用以下格式通过树内提供商创建的卷将正确迁移:

default-datastore: <default-datastore-name>
resourcepool-path: "<cluster-name>/Resources/<resource-pool-name>"

跟踪此错误的 Rancher 问题: https://github.com/rancher/rancher/issues/31105

先决条件

  • vSphere CSI 迁移需要 vSphere 7.0u1。为了能够管理现有的树内 vSphere 卷,请将 vSphere 升级到 7.0u1。

  • Kubernetes 版本必须为 1.19 或更高。

迁移

1.安装 CPI 插件

在安装 CPI 之前,我们需要对所有节点进行 node.cloudprovider.kubernetes.io/uninitialized=true:NoSchedule 污点标记。

可以通过运行以下命令来完成此操作:

curl -O https://raw.githubusercontent.com/rancher/helm3-charts/56b622f519728378abeddfe95074f1b87ab73b1e/charts/vsphere-cpi/taints.sh

或:

wget https://raw.githubusercontent.com/rancher/helm3-charts/56b622f519728378abeddfe95074f1b87ab73b1e/charts/vsphere-cpi/taints.sh
chmod +x taints.sh
./taints.sh <path to kubeconfig if running the command outside the cluster>

一旦所有节点通过运行脚本被标记,启动 Helm vSphere CPI 图表。

  1. 单击 ☰ > 集群管理

  2. 转到将安装 vSphere CPI 图表的集群并点击 探索.

  3. 点击 应用  图表

  4. 点击 vSphere CPI

  5. 单击 安装

  6. 填写所需的 vCenter 详细信息并点击 安装

vSphere CPI 使用 ProviderID 初始化所有节点,这是 vSphere CSI 驱动程序所需的。

检查所有节点是否使用以下命令初始化了 ProviderID:

kubectl describe nodes | grep "ProviderID"

2.安装CSI驱动程序

  1. 单击 ☰ > 集群管理

  2. 前往将要安装 vSphere CSI 图表的集群并点击 探索

  3. 点击 应用  图表

  4. 点击 vSphere CSI

  5. 单击 安装

  6. 填写所需的 vCenter 详细信息并点击 安装

  7. 勾选 安装前自定义 Helm 选项 并点击 下一步

  8. 功能 标签下,勾选 启用 CSI 迁移

  9. 可选地,前往 存储 标签并设置一个数据存储。此图表创建一个 StorageClass,使用 csi.vsphere.vmware.com 作为 provisioner。在创建此 StorageClass 时,您可以提供用于 CSI 卷供应的数据存储的 URL。数据存储的 URL 可以在 vSphere 客户端中找到,方法是选择数据存储并转到摘要标签。填写 StorageClass 的详细信息。

  10. 单击 安装

3.编辑集群以启用 CSI 迁移功能标志。

  1. 在编辑集群时,如果 Kubernetes 版本低于 1.19,请从 Kubernetes 版本 下拉菜单中选择 Kubernetes 版本 1.19 或更高版本。

  2. 要启用功能标志,请点击 "以 YAML 编辑",并在 kube-controller 和 kubelet 下添加以下内容:

       extra_args:
         feature-gates: "CSIMigration=true,CSIMigrationvSphere=true"

4.排空工作节点。

在升级期间,必须在更改 kubelet 和 kube-controller-manager 参数之前排空工作节点。

  1. 单击 ☰ > 集群管理

  2. 前往将要排空工作节点的集群并点击 ⋮ > 编辑配置

  3. 在*高级选项*部分,将字段*最大工作节点不可用*设置为1。

  4. 在升级期间要排空节点,请选择排空节点 

  5. 将*强制*和*删除本地数据*设置为*true*。

  6. 点击*保存*以升级集群。