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

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

Amazon EBS CSI 迁移常见问题

重要

如果您在版本 1.22 或更早版本的集群上运行 Pods,则必须先安装 Amazon EBS CSI 驱动程序,然后再将集群更新到版本 1.23,以避免服务中断。

Amazon EBS 容器存储接口 (CSI) 迁移功能将处理存储操作的责任从 Amazon EBS 树内 EBS 存储预配置程序移交给 Amazon EBS CSI 驱动程序

什么是 CSI 驱动程序?

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

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

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

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

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

什么是 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

我能否在版本 1.23 和更高版本的集群中挂载 kubernetes.io/aws-ebs StorageClass 卷?

是的,只要安装了 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 EKS 1.23 和更高版本的集群上预置 kubernetes.io/aws-ebs StorageClass 卷?

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

kubernetes.io/aws-ebs StorageClass 置备程序是否会从 Amazon EKS 中删除?

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

如何安装 Amazon EBS CSI 驱动程序?

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

重要

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

如何检查我的集群中是否安装了 Amazon EBS CSI 驱动程序?

要确定集群上是否安装了驱动程序,请运行以下命令:

kubectl get csidriver ebs.csi.aws.com

要检查该安装是否由 Amazon EKS 管理,请运行以下命令:

aws eks list-addons --cluster-name my-cluster

如果我尚未安装 Amazon EBS CSI 驱动程序,Amazon EKS 是否会阻止集群更新到版本 1.23

否。

如果我在将集群更新到 1.23 版本之前忘记安装 Amazon EBS CSI 驱动程序,该怎么办? 我可以在更新集群后安装驱动程序吗?

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

在新创建的 Amazon EKS 1.23 版本和更高版本集群中应用的默认 StorageClass 是什么?

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

当我将集群更新到 1.23 版本时,Amazon EKS 是否会对已存在于现有集群中的 StorageClasses 进行更改?

否。

如何使用快照将持久卷从 kubernetes.io/aws-ebsStorageClass 迁移到 ebs.csi.aws.com

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

如何使用注释修改 Amazon EBS 卷?

从 aws-ebs-csi-driver v1.19.0-eksbuild.2 开始,您可以在其 PersistentVolumeClaim(PVC)内使用注释修改 Amazon EBS 卷。新的卷修改功能作为附加的 sidecar 实施,名为 volumemodifier。有关更多信息,请参阅 Amazon 博客上的 Simplifying Amazon EBS volume migration and modification on Kubernetes using the EBS CSI Driver

Windows 工作负载是否支持迁移?

是。如果您正在使用开源的 Helm 图表安装 Amazon EBS CSI 驱动程序,请将 node.enableWindows 设置为 true。如果将 Amazon EBS CSI 驱动程序作为 Amazon EKS 附加组件安装,该设置为默认设置。创建 StorageClasses 时,将 fsType 设置为 Windows 文件系统,例如 ntfs。随即将 Windows 工作负载的卷操作迁移到 Amazon EBS CSI 驱动程序,就像迁移 Linux 工作负载的卷操作一样。