Amazon EBS CSI 迁移常见问题 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon EBS CSI 迁移常见问题

默认情况下,Amazon EBS Container Storage Interface (CSI) 迁移功能在 Amazon EKS 1.23 和更高版本的集群上处于启用状态。如果您在版本 1.22 或更早版本的集群上运行 pods,必须先安装 Amazon EBS 驱动程序,然后再将集群更新到版本 1.23,以避免服务中断。选择任何常见问题以了解其答案。

CSI 驱动程序具有以下功能:

  • 替换存在于 Kubernetes 项目源代码中的 Kubernetes“树内”存储驱动程序。

  • 与存储提供商(如 Amazon EBS)合作。

  • 提供简化的插件模型,使 Amazon 这样的存储提供商更容易发布功能并保持支持,而无需依赖 Kubernetes 发布周期。

有关更多信息,请参阅 Kubernetes CSI 文档中的介绍

Kubernetes CSI 迁移功能将处理存储操作的责任从现有的树内存储插件(例如 kubernetes.io/aws-ebs)移至相应的 CSI 驱动程序。只要安装了相应的 CSI 驱动程序,现有的 StorageClassPersistentVolumePersistentVolumeClaim (PVC) 对象便会继续工作。启用该功能后:

  • 利用 PVC 的现有工作负载将一如既往地继续运行。

  • Kubernetes 将所有存储管理操作的控制权交给 CSI 驱动程序。

有关更多信息,请参阅 Kubernetes 博客上的 Kubernetes1.23: Kubernetes In-Tree to CSI Volume Migration Status Update(树内插件至 CSI 卷迁移状态更新)。

为帮助您从树内插件迁移到 CSI 驱动程序,默认情况下在 Amazon EKS 版本 1.23 以及更高版本的集群上启用 CSIMigrationCSIMigrationAWS 标记。这些标记让您的集群能够将树内 API 转换为其等效的 CSI API。这些标记设置在由 Amazon EKS 管理的 Kubernetes 控制面板,以及在 Amazon EKS 优化版 AMI 中配置的 kubelet 设置中。如果您在集群中有使用 Amazon EBS 卷的 pods,请在将集群更新为版本 1.23 之前,安装 Amazon EBS CSI 驱动程序。否则,预置和挂载等卷操作可能无法按预期工作。有关更多信息,请参阅 Amazon EBS CSI 驱动程序

注意

树内 StorageClass 置备程序命名为 kubernetes.io/aws-ebs。Amazon EBS CSI StorageClass 置备程序命名为 ebs.csi.aws.com

是的,只要安装了 Amazon EBS CSI 驱动程序即可执行此操作。对于新创建的版本 1.23 和更高版本的集群,我们建议您在集群创建过程中安装 Amazon EBS CSI 驱动程序。我们还建议只使用基于 ebs.csi.aws.com 置备程序的 StorageClasses

如果您已将集群控制面板更新为版本 1.23 并且尚未将您的节点更新为 1.23,则 CSIMigrationCSIMigrationAWS kubelet 标记未启用。在这种情况下,使用树内驱动程序来挂载基于 kubernetes.io/aws-ebs 的卷。但是,仍必须安装 Amazon EBS CSI 驱动程序,以确保可以计划使用基于 kubernetes.io/aws-ebs 的卷的 pods。其他卷操作也需要驱动程序才能成功。

是的,只要安装了 Amazon EBS CSI 驱动程序即可执行此操作。

不会。StorageClass 置备程序 kubernetes.io/aws-ebs 和卷类型 awsElasticBlockStore 是 Kubernetes API 的一部分。这些资源不再受支持,但没有删除它们的计划。

如果您想自己管理驱动程序,可以使用开源的 Helm 图表进行安装。或者,您可以安装 Amazon EBS CSI 驱动程序 Amazon EKS 附加组件。如需更新 Amazon EKS 附加组件,您需启动更新,然后 Amazon EKS 会为您更新附加组件。

重要

Kubernetes 树内 Amazon EBS 驱动程序在 Kubernetes 控制面板上运行。它使用分配给 Amazon EKS 集群 IAM 角色 的 IAM 权限来预置 Amazon EBS 卷。Amazon EBS CSI 驱动程序在节点上运行。该驱动程序需要 IAM 权限才能预置卷。有关更多信息,请参阅为服务账户创建 Amazon EBS CSI 驱动程序 IAM 角色

使用 helm list -A 确定是否安装了开源的 Helm 图表。使用 aws eks list-addons 确定是否安装了 Amazon EKS 附加组件。

否。

可以,但需要 Amazon EBS CSI 驱动程序的卷操作将在集群更新后失败,直到安装驱动程序为止。

默认 StorageClass 行为将保持不变。对于每个新集群,Amazon EKS 都会应用一个名为 gp2 的基于 kubernetes.io/aws-ebsStorageClass。我们不打算从新创建的集群中删除该 StorageClass。尽管可能会发生变化,但我们目前以 1.25 版本为目标,以便从应用于新创建集群的 StorageClass 中删除默认注释。与集群默认 StorageClass 独立,如果您在不指定卷类型的情况下创建基于 ebs.csi.aws.comStorageClass,则 Amazon EBS CSI 驱动程序将默认为使用 gp3

否。

要迁移持久卷,请参阅 Amazon 博客上的将 Amazon EKS 集群从 gp2 迁移到 gp3 EBS 卷

是。如果您正在使用开源的 Helm 图表安装 Amazon EBS CSI 驱动程序,请将 node.enableWindows 设置为 true。如果将 Amazon EBS CSI 驱动程序作为 Amazon EKS 附加组件安装,该设置为默认设置。创建 StorageClasses 时,将 fsType 设置为 Windows 文件系统,例如 ntfs。随即将 Windows 工作负载的卷操作迁移到 Amazon EBS CSI 驱动程序,就像迁移 Linux 工作负载的卷操作一样。一个例外情况是文件系统大小调整操作,这些操作在使用 Windows 文件系统的 kubernetes.io/aws-ebs 持久卷上不受支持。