选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用适用于 Amazon S3 的 Mountpoint CSI 驱动程序访问适用于 Amazon S3 对象

聚焦模式
使用适用于 Amazon S3 的 Mountpoint CSI 驱动程序访问适用于 Amazon S3 对象 - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

借助适用于 Amazon S3 的 Mountpoint 容器存储接口(CSI)驱动程序,您的 Kubernetes 应用程序可以通过文件系统接口访问 Amazon S3 对象,从而在不更改任何应用程序代码的情况下实现高聚合吞吐量。基于适用于 Amazon S3 的 Mountpoint 构建的 CSI 驱动程序,将 Amazon S3 存储桶以卷的形式呈现,可供 Amazon EKS 和自主管理型 Kubernetes 集群中的容器访问。本主题介绍了如何将适用于 Amazon S3 的 Mountpoint CSI 驱动程序部署到您的 Amazon EKS 集群。

注意事项

  • 适用于 Amazon S3 的 Mountpoint CSI 驱动程序目前与基于 Windows 的容器映像不兼容。

  • 适用于 Amazon S3 的 Mountpoint CSI 驱动程序目前与 Amazon EKS 混合节点功能不兼容。

  • 适用于 Amazon S3 的 Mountpoint CSI 驱动程序不支持 AWS Fargate,但支持在 Amazon EC2 中运行的容器(无论是采用 Amazon EKS 还是自定义 Kubernetes 安装)。

  • 适用于 Amazon S3 的 Mountpoint CSI 驱动程序仅支持静态预置。不支持动态预置或创建新存储桶。

    注意

    静态预调配是指使用现有的 Amazon S3 存储桶,该存储桶被指定为 PersistentVolume 对象中 volumeAttributes 中的 bucketName。有关更多信息,请参阅 GitHub 上的 Static Provisioning

  • 使用适用于 Amazon S3 的 Mountpoint CSI 驱动程序挂载的卷,不支持所有 POSIX 文件系统功能。有关文件系统行为的详细信息,请参阅 GitHub 上的 Mountpoint for Amazon S3 file system behavior

先决条件

  • 适用于集群的现有 AWS Identity and Access Management(IAM)OpenID Connect(OIDC)提供者。要确定您是否已经拥有一个或是否要创建一个,请参阅为集群创建 IAM OIDC 提供商

  • 您的设备或 AWS CloudShell 上安装并配置了 2.12.3 或更高版本的 AWS CLI。

  • 您的设备或 AWS CloudShell 上安装了 kubectl 命令行工具。该版本可以与集群的 Kubernetes 版本相同,或者最多早于或晚于该版本一个次要版本。例如,如果您的集群版本为 1.29,则可以将 kubectl1.281.291.30 版本与之配合使用。要安装或升级 kubectl,请参阅 设置 kubectl 和 eksctl

创建 IAM 策略

适用于 Amazon S3 的 Mountpoint CSI 驱动程序需要 Amazon S3 权限才能与文件系统交互。本节将介绍如何创建 IAM 策略来授予必要的权限。

以下示例策略遵循 Mountpoint 的 IAM 权限建议。您也可以使用 AWS 托管式策略 AmazonS3FullAccess,但此托管式策略授予的权限超出了 Mountpoint 所需的权限。

有关 Mountpoint 建议权限的更多信息,请参阅 GitHub 上的 Mountpoint IAM permissions

  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在左侧导航窗格中,选择 Policies(策略)

  3. 策略页面上,选择创建策略

  4. 对于策略编辑器,选择 JSON

  5. 策略编辑器下,复制并粘贴以下内容:

    重要

    amzn-s3-demo-bucket1 替换为您自己的 Amazon S3 存储桶名称。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MountpointFullBucketAccess", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "MountpointFullObjectAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] } ] }

    与 Amazon S3 Express One Zone 存储类一起推出的目录存储桶,使用不同于一般用途存储桶的身份验证机制。您应该使用 s3express:CreateSession 操作,而非使用 s3:* 操作。有关目录存储桶的更多信息,请参阅《Amazon S3 用户指南》中的目录存储桶

    以下是您将对目录存储桶使用的最低权限策略的示例。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3express:CreateSession", "Resource": "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket1--usw2-az1--x-s3" } ] }
  6. 选择下一步

  7. 查看和创建页面上,为您的策略命名。此示例演练使用名称 AmazonS3CSIDriverPolicy

  8. 选择 创建策略

创建 IAM 角色

适用于 Amazon S3 的 Mountpoint CSI 驱动程序需要 Amazon S3 权限才能与文件系统交互。本节将介绍如何创建 IAM 角色来委派这些权限。要创建此角色,您可以使用以下工具之一:

注意

在上一节中创建了 IAM 策略 AmazonS3CSIDriverPolicy

eksctl

使用 eksctl 创建适用于 Amazon S3 的 Mountpoint CSI 驱动程序 IAM 角色

要创建 IAM 角色和 Kubernetes 服务账户,请运行以下命令。这些命令还会将 AmazonS3CSIDriverPolicy IAM 策略附加到角色,使用 IAM 角色的 Amazon 资源名称(ARN)对 Kubernetes 服务账户 (s3-csi-controller-sa) 进行注释,并将 Kubernetes 服务账户名称添加到 IAM 角色的信任策略。

CLUSTER_NAME=my-cluster REGION=region-code ROLE_NAME=AmazonEKS_S3_CSI_DriverRole POLICY_ARN=AmazonEKS_S3_CSI_DriverRole_ARN eksctl create iamserviceaccount \ --name s3-csi-driver-sa \ --namespace kube-system \ --cluster $CLUSTER_NAME \ --attach-policy-arn $POLICY_ARN \ --approve \ --role-name $ROLE_NAME \ --region $REGION \ --role-only

AWS Management Console

  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在左侧导航窗格中,选择 Roles(角色)。

  3. Roles(角色)页面上,选择 Create role(创建角色)。

  4. Select trusted entity(选择受信任的实体)页面上,请执行以下操作:

    1. Trusted entity type(受信任的实体类型)部分中,选择 Web identity(Web 身份)。

    2. 对于 Identity provider(身份提供商),为您的集群选择 OpenID Connect provider URL(OpenID Connect 提供程序 URL)(如 Amazon EKS 中的 Overview(概述)下所示)。

      如果未显示 URL,请查看先决条件部分。

    3. 对于 Audience (受众),请选择 sts.amazonaws.com

    4. 选择下一步

  5. Add permissions(添加权限)页面上,请执行以下操作:

    1. 筛选策略框中,输入 AmazonS3CSIDriverPolicy。

      注意

      在上一节中创建了此策略。

    2. 选中搜索返回的 AmazonS3CSIDriverPolicy 结果左侧的复选框。

    3. 选择下一步

  6. Name, review, and create(命名、查看和创建)页面中,请执行以下操作:

    1. 角色名称中为角色输入唯一名称,例如 AmazonEKS_S3_CSI_DriverRole。

    2. 添加标签(可选)下,将标签作为键值对附加,以将元数据添加到角色。有关在 IAM 中使用标签的更多信息,请参阅《IAM 用户指南》 中的标记 IAM 资源

    3. 选择 Create role(创建角色)。

  7. 创建角色后,在控制台中选择角色以将其打开进行编辑。

  8. 选择 Trust relationships(信任关系)选项卡,然后选择 Edit trust policy(编辑信任策略)。

  9. 该行看起来类似于以下行:

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"

    在上一行末尾添加逗号,然后在逗号后添加下一行。将 region-code 替换为您的集群所在的 AWS 区域。将 EXAMPLED539D4633E53DE1B71EXAMPLE 替换为您的集群的 OIDC 提供者 ID。

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:s3-csi-driver-sa"
  10. 确保将 Condition 运算符设置为 "StringEquals"

  11. 选择 Update policy(更新策略)以完成操作。

AWS CLI

  1. 查看集群的 OIDC 提供者 URL。将 my-cluster 替换为您的集群的名称。如果命令的输出为 None,请查看先决条件

    aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text

    示例输出如下。

    https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
  2. 创建 IAM 角色,向 Kubernetes 服务账户授予 AssumeRoleWithWebIdentity 操作权限。

    1. 将以下内容复制到名为 aws-s3-csi-driver-trust-policy.json 的文件中。请将 111122223333 替换为您的账户 ID。将 EXAMPLED539D4633E53DE1B71EXAMPLEregion-code 替换为上一步中返回的值。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:s3-csi-driver-sa", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
    2. 创建角色。您可以将 AmazonEKS_S3_CSI_DriverRole 更改为其它名称,但如果更改,请确保在后续步骤中也做出相应更改。

      aws iam create-role \ --role-name AmazonEKS_S3_CSI_DriverRole \ --assume-role-policy-document file://"aws-s3-csi-driver-trust-policy.json"
  3. 使用以下命令将之前创建的 IAM 策略附加到角色。

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonS3CSIDriverPolicy \ --role-name AmazonEKS_S3_CSI_DriverRole
    注意

    在上一节中创建了 IAM 策略 AmazonS3CSIDriverPolicy

  4. 如果您将驱动程序作为 Amazon EKS 附加组件安装,则跳过此步骤。对于驱动程序自主管理型安装,请创建 Kubernetes 服务账户并使用创建的 IAM 角色的 ARN 进行注释。

    1. 将以下内容保存到名为 mountpoint-s3-service-account.yaml 的文件中。请将 111122223333 替换为您的账户 ID。

      --- apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-mountpoint-s3-csi-driver name: mountpoint-s3-csi-controller-sa namespace: kube-system annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole
    2. 在集群上创建 Kubernetes 服务账户。使用您创建的名为 AmazonEKS_S3_CSI_DriverRole 的 IAM 角色对 Kubernetes 服务账户 (mountpoint-s3-csi-controller-sa) 进行注释。

      kubectl apply -f mountpoint-s3-service-account.yaml
      注意

      在此过程中部署插件后,系统会创建一个名为 s3-csi-driver-sa 的服务账户,并将其配置为使用该服务账户。

安装适用于 Amazon S3 的 Mountpoint CSI 驱动程序

您可以通过 Amazon EKS 附加组件,安装适用于 Amazon S3 的 Mountpoint CSI 驱动程序。您可以使用以下工具将附加组件添加到您的集群。

您也可以将适用于 Amazon S3 的 Mountpoint CSI 驱动程序作为自主管理型安装进行安装。有关执行自主管理型安装的说明,请参阅 GitHub 上的 Installation

v1.8.0 开始,您可以为 CSI 驱动程序的容器组(pod)配置可容忍的污点。为此,要么使用 node.tolerations 指定一组要容忍的自定义污点,要么使用 node.tolerateAllTaints 容忍所有污点。有关更多信息,请参阅 Kubernetes 文档中的 Taints and Tolerations

eksctl

使用 eksctl 添加 Amazon S3 CSI 附加组件

运行以下命令。将 my-cluster 替换为您的集群的名称,将 111122223333 替换为您的账户 ID,并将 AmazonEKS_S3_CSI_DriverRole 替换为之前创建的 IAM 角色的名称。

eksctl create addon --name aws-mountpoint-s3-csi-driver --cluster my-cluster \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole --force

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

您可以通过配置文件对 eksctl 进行自定义。有关更多信息,请参阅 eksctl 文档中的使用配置值。以下示例演示了如何容忍所有污点。

# config.yaml ... addons: - name: aws-mountpoint-s3-csi-driver serviceAccountRoleARN: arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole configurationValues: |- node: tolerateAllTaints: true

AWS Management Console

  1. 打开 Amazon EKS 控制台

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

  3. 选择要为其配置适用于 Amazon S3 的 Mountpoint CSI 附加组件的集群名称。

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

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

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

    1. Amazon EKS 附加组件部分中,选中适用于 Amazon S3 的 Mountpoint CSI 驱动程序复选框。

    2. 选择下一步

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

    1. 选择您想使用的版本

    2. 对于选择 IAM 角色,选择要将适用于 Amazon S3 的 Mountpoint CSI 驱动程序 IAM 策略附加到的 IAM 角色的名称。

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

    4. (可选)展开可选配置设置后,在配置值字段中配置容忍度。

    5. 选择下一步

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

AWS CLI

使用 AWS CLI 添加适用于 Amazon S3 的 Mountpoint CSI 附加组件

运行以下命令。将 my-cluster 替换为您的集群的名称,将 111122223333 替换为您的账户 ID,并将 AmazonEKS_S3_CSI_DriverRole 替换为之前创建的 IAM 角色的名称。

aws eks create-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole

您可以使用 --configuration-values 标志自定义命令。以下替代示例演示了如何容忍所有污点。

aws eks create-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole \ --configuration-values '{"node":{"tolerateAllTaints":true}}'

配置适用于 Amazon S3 的 Mountpoint

在大多数情况下,您可以仅使用存储桶名称来配置适用于 Amazon S3 的 Mountpoint。有关配置适用于 Amazon S3 的 Mountpoint 的说明,请参阅 GitHub 上的 Configuring Mountpoint for Amazon S3

部署示例应用程序

您可以将静态预置部署到现有 Amazon S3 存储桶上的驱动程序。有关更多信息,请参阅 GitHub 上的 Static provisioning

移除适用于 Amazon S3 的 Mountpoint CSI 驱动程序

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

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

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

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

您可以使用以下工具移除 Amazon S3 CSI 附加组件:

eksctl

使用 eksctl 移除 Amazon S3 CSI 附加组件

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

eksctl delete addon --cluster my-cluster --name aws-mountpoint-s3-csi-driver --preserve

AWS Management Console

  1. 打开 Amazon EKS 控制台

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

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

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

  5. 选择适用于 Amazon S3 的 Mountpoint CSI 驱动程序

  6. 选择移除

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

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

    2. 输入 aws-mountpoint-s3-csi-driver

    3. 选择移除

AWS CLI

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

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

aws eks delete-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver --preserve
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。