如何在 Tanzu Kubernetes Grid Integrated Edition 中将卷从 VCP 迁移到 vSphere CSI Driver_驱动程序

Kubernetes 的生命周期是快速的。感觉就像昨天我们部署了第一个持久卷。实现这一目标的技术是VMware vSphere Cloud Provider(VCP),许多云提供商在早期使用了相同类型的集成。随着时间的推移,Kubernetes 项目的目标是删除供应商代码并转向树外驱动程序模型。VMware 是容器存储接口 (CSI) 设计的一部分,早在 vSphere CSI 驱动程序稳定之前就开始开发它。是时候更新 Kubernetes 版本并开始将我们的生产工作负载从 VCP 迁移到 CSI 驱动程序了。

作为 VMware Tanzu Kubernetes Grid Integrated 部署的管理员,您可能知道 vSphere Cloud Provider 驱动程序已被弃用,取而代之的是 vSphere CSI 驱动程序,并且使用较新的驱动程序有很多好处。例如,vSphere CSI 驱动程序遵循当前首选的树外插件设计,可从 Kubernetes 版本解锁修补,并具有允许为 vSphere Admin(云原生存储)提供更好的容器卷可见性的功能。但是,有些环境当前使用 vSphere Cloud Provider 驱动程序,问题是树内 vSphere 卷插件将在未来的 Kubernetes 版本中删除。因此,对于那些想要迁移到vSphere CSI驱动程序的用户,VMware Tanzu Kubernetes Grid Integrated Edition 1.12中引入的新VCP到vSphere CSI迁移功能可以提供帮助。请继续阅读以了解有关此功能以及迁移工作原理的更多信息。

专注于轻松

已经有迁移到 vSphere CSI 驱动程序的方法。您需要做的就是添加一个 vSphere CSI 存储类,扩展应用程序以使用允许复制数据的新存储类,然后终止旧的容器实例。这听起来很容易,也许在一个完美的世界里或在实验室演示期间,确实如此。然而,在实际的生产环境中,它很少那么顺利。当某些应用程序不像我们希望的那样云原生时,就会出现技术问题。所涉及的人为因素(与多个用户组协调并解释如何处理其 Pod 和存储类)可能会使此过程耗时且容易出错。

借助 VCP 到 vSphere CSI 迁移功能,用户无需更改他们正在执行的任何操作。他们可以继续使用这些卷,就好像它们仍然是VCP卷一样,而Tanzu Kubernetes Grid Integration Edition 1.12足够聪明,可以弄清楚如何使用后端的vSphere CSI驱动程序来支持它们。由于对于从 VCP 迁移的 vSphere 卷,数据不会从一个磁盘移动到另一个磁盘,因此这也更容易。

启用 VCP 到 vSphere CSI 迁移

需要安装集成的 vSphere CSI 驱动程序,并且应移除任何手动安装 vSphere CSI 驱动程序。在群集上启用 VCP 到 vSphere CSI 迁移之前,我建议确保已部署且无法中断服务的任何应用程序都将副本设置为 2 或更多。如果每个容器挂载了任何 vSphere Cloud Provider 卷,则需要重新启动该容器,以便可以卸载这些卷,然后在 vSphere CSI 驱动程序下再次挂载。但是,由于“tkgi update-cluster”工作流将重新启动每个工作线程上的所有 Pod,因此最好在进行更改之前对环境进行运行状况检查。

准备好后,创建一个包含以下内容的“config.json”文件。如果您愿意,可以在 YAML 中设置此格式。如果这样做,请确保将文件扩展名更改为 YAML,因为 Tanzu Kubernetes Grid Integrated Edition CLI 会查找它:

{

“enable_csi_migration”:“真”

}

准备好开始后,请使用配置文件和要启用 VCP 到 vSphere CSI 迁移的集群名称运行以下命令:“tkgi update-cluster my-cluster --config config.json”

如何在 Tanzu Kubernetes Grid Integrated Edition 中将卷从 VCP 迁移到 vSphere CSI Driver_ide_02

启用 VCP 到 vSphere CSI 迁移后的 config.json 文件和输出的内容

深入杂草

那么,启用迁移后会发生什么情况?当“tkgi update-cluster”运行时,主节点由 Bosh Director 重建。发生这种情况时,脚本将与清单一起 generate-signed-webhook-certs.sh 和 create-validation-webhook.sh,并添加到 .此外,清单已更新,将“csi-migration”设置为“true”(默认值为“false”)。完成此操作并引导主节点后,将设置 Webhook 并启用 VCP 到 vSphere CSI 迁移。此时,将通过其注释检查和标识所有当前持久卷和持久卷声明。​​validatingwebhook.yaml​​​​namespace.yaml​​​​/var/vcap/packages/csi/bin directory​​​​/var/vcap/jobs/csi-controller/config/feature-switch.yml​

光伏:

附注:

pv.kubernetes.io/provisioned-by:kubernetes.io/vsphere-volume

聚氯乙烯:

附注:

volume.beta.kubernetes.io/storage-provisioner:kubernetes.io/vsphere-volume

然后,将通过排空和驱逐 pod 来更新工作线程。发生这种情况时,vSphere Cloud Provider 将卸载并分离 vSphere 卷。当容器在另一个工作线程上启动时,vSphere CSI 驱动程序会将卷附加并挂载到工作线程和容器,而不是 vSphere Cloud Provider。迁移卷后,将添加注释“pv.kubernetes.io/migrated-to:csi.vsphere.vmware.com”。记住这一点很有用,因为以前位于 vSphere Cloud Provider 上的旧卷当前无法获得在 vSphere CSI 驱动程序上创建的新卷所需的所有功能。

如果要检查csi_migration是否已启用或验证它是否已启用,可以通过查看配置映射来执行此操作。例如:“kubectl describe configmaps internal-feature-states.csi.vsphere.vmware.com -n vmware-system-csi”

如何在 Tanzu Kubernetes Grid Integrated Edition 中将卷从 VCP 迁移到 vSphere CSI Driver_ide_03

描述 internal-feature-states.csi.vsphere.vmware.com 配置映射时的输出

开始使用

在实现飞跃之前,请务必查看文档中列出的所有内容,以获取在启用迁移之前要考虑的事项列表。如果您想了解 Tanzu Kubernetes Grid Integrated Edition 1.12 中提供的更多新功能以及如何更新,请查看发行说明。