5.7. CSI 自动迁移
通常 OpenShift Container Platform 附带的树内存储驱动程序已弃用,并被对应的 Container Storage Interface(CSI)驱动程序替代。OpenShift Container Platform 为树内卷插件提供自动迁移到对应的 CSI 驱动程序。
5.7.1. 概述
此功能会自动将使用树内存储插件置备的卷迁移到对应的 Container Storage Interface (CSI) 驱动程序中。
此过程不执行任何数据迁移,OpenShift Container Platform 只在内存中转换持久性卷对象。因此,翻译的持久性卷对象不会存储在磁盘上,也不会更改它的内容。CSI 自动迁移应该可以无缝进行。这个功能不会改变如何使用所有现有 API 对象: 例如 PersistentVolume、PersistentVolume
、PersistentVolumeVolumeClaims
和 StorageClasses
。
以下到 CSI 驱动程序的树内会自动迁移:
- Azure Disk
- OpenStack Cinder
- Amazon Web Services(AWS)Elastic Block Storage(EBS)
- Google Compute Engine Persistent Disk (GCP PD)
- Azure File
- VMware vSphere (请参阅以下 vSphere 迁移行为的信息)
这些卷类型的 CSI 迁移被视为正式发布(GA),且无需人工干预。
如果原始 in-tree 存储插件不支持,则 CSI 自动迁移不会启用任何新的 CSI 驱动程序功能,如快照或扩展。
5.7.2. 存储类影响
对于新的 OpenShift Container Platform 4.13 及之后的版本,安装默认存储类是 CSI 存储类。所有使用这个存储类置备的卷都是 CSI 持久性卷(PV)。
对于从 4.12 版本升级到 4.13 及更高版本中的集群,会创建 CSI 存储类,如果在升级前设置了默认存储类,则设置为默认值。在不太可能的情况下,存在相同名称的存储类时,现有的存储类不会改变。任何现有的 in-tree 存储类保留,可能需要某些功能,如卷扩展才能用于现有的树内 PV。虽然引用 in-tree 存储插件的存储类将继续工作,但我们建议将默认存储类切换到 CSI 存储类。
要更改默认存储类,请参阅更改默认存储类。
5.7.3. vSphere 自动迁移
迁移包括显著的后果:
- 启用迁移无法撤消。
- 根据集群中的节点数量,迁移可能需要一些时间才能完成。
5.7.3.1. 新的 OpenShift Container Platform 安装
对于 OpenShift Container Platform 4.13 或更高版本的新安装,默认启用自动迁移。
5.7.3.2. 从 OpenShift Container Platform 4.13 更新至 4.14
如果您使用 vSphere in-tree 持久性卷(PV),并希望从 OpenShift Container Platform 4.13 更新至 4.14,首先将 vSphere vCenter 和 ESXI 主机更新至 7.0 Update 3L 或 8.0 Update 2,否则 OpenShift Container Platform 更新会被阻断。更新 vSphere 后,可能会发生 OpenShift Container Platform 更新,并默认启用自动 Container Storage Interface (CSI) 迁移。
或者,如果您不想更新 vSphere,可以通过执行管理员确认步骤来执行 OpenShift Container Platform 更新:
oc -n openshift-config patch cm admin-acks --patch '{"data":{"ack-4.13-kube-127-vsphere-migration-in-4.14":"true"}}' --type=merge
如果您没有更新到 vSphere 7.0 Update 3L 或 8.0 Update 2,并使用管理员确认升级到 OpenShift Container Platform 4.14,因为 OpenShift Container Platform 4.14 中默认启用了 CSI 迁移会导致一个已知的问题。在继续管理员确认前,请仔细阅读这篇知识库文章。
5.7.3.3. 从 OpenShift Container Platform 4.12 更新至 4.13
如果您使用 vSphere in-tree 持久性卷 (PV),并希望从 OpenShift Container Platform 4.12 更新至 4.13,将 vSphere vCenter 和 ESXI 主机更新至 7.0 Update 3L 或 8.0 Update 2,否则 OpenShift Container Platform 更新会被阻断。更新 vSphere 后,只有在选择了 vSphere 时,才会为 vSphere 进行自动的 Container Storage Interface (CSI) 迁移。
或者,如果您不想更新 vSphere,您可以运行以下命令来执行 OpenShift Container Platform 更新,以执行管理员确认:
oc -n openshift-config patch cm admin-acks --patch '{"data":{"ack-4.12-kube-126-vsphere-migration-in-4.14":"true"}}' --type=merge
对于从 OpenShift Container Platform 4.12 升级到 4.13,通常可以安全地提供请求的管理员确认,因为 CSI 迁移还没有为将集群从 4.12 升级到 4.13。但是,红帽建议您开始计划将 vSphere 环境更新到 4.14,以便所有 in-tree 卷都可以由 CSI 驱动程序无缝管理。
如果您没有升级到 OpenShift Container Platform 4.13.10 或更高版本,且没有 更新 vSphere,然后选择迁移(请参阅 使用 Web 控制台选择自动 CSI 迁移 或使用 CLI 来自动 CSI 迁移 ),则可能会出现已知问题。在选择前,请仔细阅读以上列出的用于迁移的结果,并 仔细阅读这篇知识库文章。
5.7.3.4. 使用 Web 控制台选择自动迁移
5.7.3.4.1. 先决条件
- 访问 OpenShift Container Platform Web 控制台。
- 使用 cluster-admin 权限访问集群。
5.7.3.4.2. 流程
选择为 vSphere 自动 CSI 迁移:
- 登录到 web 控制台。
-
点 Administration
CustomResourceDefinitions。 -
在 CustomResourceDefinitions 页面中,键入 "Storage" 来查找
Storage
自定义资源(CR)。 - 点 Storage CR。
- 在 storages.operator.openshift.io 页面中,点 Instances 选项卡。
- 点所需实例的名称,然后点 YAML 选项卡。
将
spec.vsphereStorageDriver
参数设置为CSIWithMigrationDriver
,如下例所示:.... spec: logLevel: Normal managementState: Managed operatorLogLevel: Normal vsphereStorageDriver: CSIWithMigrationDriver 1 ...
- 1
spec.vsphereStorageDriver
参数设置为CSIWithMigrationDriver
- 点击 Save。
5.7.3.5. 使用 CLI 选择自动 CSI 迁移
5.7.3.5.1. 先决条件
- 使用 cluster-admin 权限访问集群。
5.7.3.5.2. 流程
要为 vSphere 选择自动 CSI 迁移,请运行以下命令:
oc patch storage cluster --type=merge -p '{"spec":{"vsphereStorageDriver":"CSIWithMigrationDriver"}}'
您可以通过验证 VSphereMigrationControllerAvailable 条件是否在 Storage
对象中将 VSphereMigrationControllerAvailable
条件设置为 "true" 来确定迁移何时完成。