将 Amazon EBS CSI 驱动程序作为 Amazon EKS 附加组件管理 - Amazon EKS

将 Amazon EBS CSI 驱动程序作为 Amazon EKS 附加组件管理

要提高安全性并减少工作量,您可以将 Amazon EBS CSI 驱动程序作为 Amazon EKS 附加组件管理。有关 Amazon EKS 附加组件的信息,请参阅 Amazon EKS 附加组件。您可以按照 添加 Amazon EBS CSI 驱动程序附加组件 中的步骤添加 Amazon EBS CSI 附加组件。

如果添加了 Amazon EBS CSI 附加组件,则可以按照 将 Amazon EBS CSI 驱动程序作为 Amazon EKS 附加组件更新删除 Amazon EBS CSI 附加组件 部分的步骤进行管理。

先决条件
  • 现有集群。要查看所需的平台版本,请运行以下命令。

    aws eks describe-addon-versions --addon-name aws-ebs-csi-driver
  • 集群的现有 AWS Identity and Access Management IAM OpenID Connect (OIDC) 提供商。要确定您是否已经拥有一个或是否要创建一个,请参阅 为集群创建 IAM OIDC 提供商

  • Amazon EBS CSI 驱动程序 IAM 角色。如果您未满足此先决条件,则尝试安装附加组件并运行 kubectl describe pvc 时,将显示 failed to provision volume with StorageClasscould not create volume in EC2: UnauthorizedOperation 错误。有关更多信息,请参阅创建 Amazon EBS CSI 驱动程序 IAM 角色

  • 如果您使用的是集群范围内受限的 PodSecurityPolicy,请确保授予该附加组件足够的权限,以进行部署。有关每个附加组件 Pod 所需的权限,请参阅 GitHub 上的相关附加组件清单定义

重要

要使用 Amazon EBS CSI 驱动程序的快照功能,必须在安装附加组件之前安装外部快照程序。必须按以下顺序安装外部快照程序组件:

有关更多信息,请参阅 GitHub 上的 CSI 快照程序

添加 Amazon EBS CSI 驱动程序附加组件

重要

在将 Amazon EBS 驱动程序添加为 Amazon EKS 附加组件之前,请确认您的集群上没有安装该驱动程序的自行管理版本。如果安装了自行管理版本,请参阅 GitHub 上的 卸载自行管理的 Amazon EBS CSI 驱动程序

您可以使用 eksctl、AWS Management Console 或 AWS CLI 将 Amazon EBS CSI 附加组件添加到您的集群。

eksctl
要使用 eksctl 添加 Amazon EBS CSI 附加组件

运行以下命令。将 my-cluster 替换为您的集群的名称,将 111122223333 替换为您的账户 ID,并将 AmazonEKS_EBS_CSI_DriverRole 替换为之前创建的 IAM 角色如果您的集群位于 AWS GovCloud(美国东部)或 AWS GovCloud(美国西部)AWS 区域,则将 arn:aws: 替换为 arn:aws-us-gov:

eksctl create addon --name aws-ebs-csi-driver --cluster my-cluster --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_EBS_CSI_DriverRole --force

如果您删除 --force 选项,并且任何 Amazon EKS 附加组件设置与您的现有设置冲突,那么更新 Amazon EKS 附加组件将会失败,而且您会收到一条帮助您解决冲突的错误消息。在指定此选项之前,请确保 Amazon EKS 附加组件不会管理您需要管理的设置,因为这些设置会被此选项覆盖。有关此设置其他选项的更多信息,请参阅 eksctl 文档中的 Addons(附加组件)。有关 Amazon EKS Kubernetes 字段管理的更多信息,请参阅  Kubernetes 字段管理

AWS Management Console
要使用 AWS Management Console 添加 Amazon EBS CSI 附加组件
  1. 访问 https://console.aws.amazon.com/eks/home#/clusters 打开 Amazon EKS 控制台。

  2. 在左侧导航窗格中,选择集群

  3. 选择要为其配置 Amazon EBS CSI 附加组件的集群名称。

  4. 选择附加组件选项卡。

  5. 选择获取更多附加组件

  6. 选择附加组件页面上,执行以下操作:

    1. Amazon EKS 附加组件部分,选择 Amazon EBS CSI Driver 复选框。

    2. 选择下一步

  7. 配置选定的附加组件设置页面上,执行以下操作:

    1. 选择您想使用的 Version(版本)

    2. 对于选择 IAM 角色,选择要将 Amazon EBS CSI 驱动程序 IAM policy 附加到的 IAM 角色的名称。

    3. (可选)展开可选配置设置。如果对冲突解决方法选择覆盖,则可能用 Amazon EKS 附加组件设置覆盖现有附加组件的一个或多个设置。如果不启用此选项,并且与现有设置存在冲突,则操作将失败。您可以使用生成的错误消息对冲突进行故障排除。在选择此选项之前,请确保 Amazon EKS 附加组件不会管理您需要自行管理的设置。

    4. 选择下一步

  8. 查看和添加页面上,选择创建。附加组件安装完成后,您将看到已安装的附加组件。

AWS CLI
要使用 AWS CLI 添加 Amazon EBS CSI 附加组件

运行以下命令。将 my-cluster 替换为集群名称,将 111122223333 替换为账户 ID,将 AmazonEKS_EBS_CSI_DriverRole 替换为之前创建的角色名称。如果您的集群位于 AWS GovCloud(美国东部)或 AWS GovCloud(美国西部)AWS 区域,则将 arn:aws: 替换为 arn:aws-us-gov:

aws eks create-addon --cluster-name my-cluster --addon-name aws-ebs-csi-driver \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_EBS_CSI_DriverRole

现在您已经将 Amazon EBS CSI 驱动程序添加为 Amazon EKS 附加组件,可以继续 部署示例应用程序并验证 CSI 驱动程序是否正常运行。此过程包括设置存储类。

将 Amazon EBS CSI 驱动程序作为 Amazon EKS 附加组件更新

新版本发布后或者将集群更新到一个新的 Kubernetes 次要版本后,Amazon EKS 不会自动为集群更新 Amazon EBS CSI。要更新现有集群上的 Amazon EBS CSI,您必须启动更新,然后 Amazon EKS 会为您更新该附加组件。

eksctl
要使用 eksctl 更新 Amazon EBS CSI 附加组件
  1. 检查 Amazon EBS CSI 附加组件的当前版本。将 my-cluster 替换为您的集群名称。

    eksctl get addon --name aws-ebs-csi-driver --cluster my-cluster

    示例输出如下。

    NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE aws-ebs-csi-driver v1.11.2-eksbuild.1 ACTIVE 0 v1.11.4-eksbuild.1
  2. 将附加组件更新为上一个步骤的输出中的 UPDATE AVAILABLE 下返回的版本。

    eksctl update addon --name aws-ebs-csi-driver --version v1.11.4-eksbuild.1 --cluster my-cluster \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_EBS_CSI_DriverRole --force

    如果您删除 --force 选项,并且任何 Amazon EKS 附加组件设置与您的现有设置冲突,那么更新 Amazon EKS 附加组件将会失败,而且您会收到一条帮助您解决冲突的错误消息。在指定此选项之前,请确保 Amazon EKS 附加组件不会管理您需要管理的设置,因为这些设置会被此选项覆盖。有关此设置其他选项的更多信息,请参阅 eksctl 文档中的 Addons(附加组件)。有关 Amazon EKS Kubernetes 字段管理的更多信息,请参阅  Kubernetes 字段管理

AWS Management Console
使用 AWS Management Console 更新 Amazon EBS CSI 附加组件
  1. 访问 https://console.aws.amazon.com/eks/home#/clusters 打开 Amazon EKS 控制台。

  2. 在左侧导航窗格中,选择集群

  3. 选择要为其更新 Amazon EBS CSI 附加组件的集群名称。

  4. 选择附加组件选项卡。

  5. 选择 Amazon EBS CSI 驱动程序

  6. 选择编辑

  7. 配置 Amazon EBS CSI 驱动程序页面上,执行以下操作:

    1. 选择您想使用的 Version(版本)

    2. 对于选择 IAM 角色,选择要将 Amazon EBS CSI 驱动程序 IAM policy 附加到的 IAM 角色的名称。

    3. (可选)展开可选配置设置并根据需要进行修改。

    4. 选择保存更改

AWS CLI
使用 AWS CLI 更新 Amazon EBS CSI 附加组件
  1. 检查 Amazon EBS CSI 附加组件的当前版本。将 my-cluster 替换为您的集群名称。

    aws eks describe-addon --cluster-name my-cluster --addon-name aws-ebs-csi-driver --query "addon.addonVersion" --output text

    示例输出如下。

    v1.11.2-eksbuild.1
  2. 确定哪些版本的 Amazon EBS CSI 附加组件可用于您的集群版本。

    aws eks describe-addon-versions --addon-name aws-ebs-csi-driver --kubernetes-version 1.23 \ --query "addons[].addonVersions[].[addonVersion, compatibilities[].defaultVersion]" --output text

    示例输出如下。

    v1.11.4-eksbuild.1
    True
    v1.11.2-eksbuild.1
    False

    下方使用 True 的版本是创建附加组件时部署的默认版本。创建附加组件时部署的版本可能并非最新可用版本。在之前的输出中,创建附加组件时已部署最新的版本。

  3. 将附加组件更新为上一步输出中返回 True 的版本。如果在输出中返回,您也可以更新到更高版本。

    aws eks update-addon --cluster-name my-cluster --addon-name aws-ebs-csi-driver --addon-version v1.11.4-eksbuild.1 \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_EBS_CSI_DriverRole --resolve-conflicts PRESERVE

    PRESERVE(保留)选项将保留您为附加组件设置的任何自定义设置。有关此设置的其他选项的更多信息,请参阅《Amazon EKS 命令行参考》中的更新附加组件。有关 Amazon EKS 附加组件配置管理的更多信息,请参阅 Kubernetes 字段管理

删除 Amazon EBS CSI 附加组件

移除 Amazon EKS 附加组件时,您有两种选择。

  • 将附加组件保留在您的集群上 - 此方法将移除 Amazon EKS 对任何设置的管理。还移除 Amazon EKS 通知您更新以及在您启动更新后自动更新 Amazon EKS 附加组件的功能。但是,此方法会保留集群上的附加组件软件。此选项会将附加组件作为自行管理安装使用,而不是作为 Amazon EKS 附加组件使用。使用此方法,附加组件不停机。此过程中的命令使用此选项。

  • 从集群中完全删除附加组件 - 我们建议只有当集群中没有资源依赖于附加组件时,才从集群移除 Amazon EKS 附加组件。要执行此选项,请从您在此过程中使用的命令中删除 --preserve

如果附加组件有与其关联的 IAM 账户,则不会移除该 IAM 账户。

您可以使用 eksctl、AWS Management Console 或 AWS CLI 移除 Amazon EBS CSI 附加组件。

eksctl
要使用 eksctl 移除 Amazon EBS CSI 附加组件

请将 my-cluster 替换为您的集群名称,然后运行以下命令。

eksctl delete addon --cluster my-cluster --name aws-ebs-csi-driver --preserve
AWS Management Console
要使用 AWS Management Console 移除 Amazon EBS CSI 附加组件
  1. 访问 https://console.aws.amazon.com/eks/home#/clusters 打开 Amazon EKS 控制台。

  2. 在左侧导航窗格中,选择集群

  3. 选择要为其移除 Amazon EBS CSI 附加组件的集群名称。

  4. 选择附加组件选项卡。

  5. 选择 Amazon EBS CSI 驱动程序

  6. 选择移除

  7. 删除:aws-ebs-csi-driver 确认对话框中,执行以下操作:

    1. 如果希望 Amazon EKS 停止管理附加组件设置,请选择在集群上保留。如果要在集群上保留附加组件软件,请执行此操作。这样您可以自行管理附加组件的所有设置。

    2. 输入 aws-ebs-csi-driver

    3. 选择 Remove(移除)。

AWS CLI
要使用 AWS CLI 移除 Amazon EBS CSI 附加组件

请将 my-cluster 替换为您的集群名称,然后运行以下命令。

aws eks delete-addon --cluster-name my-cluster --addon-name aws-ebs-csi-driver --preserve