选择您的 Cookie 首选项

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

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

配置容器组(pod)使用服务账户访问 AWS 服务

聚焦模式
配置容器组(pod)使用服务账户访问 AWS 服务 - Amazon EKS

帮助改进此页面

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

帮助改进此页面

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

如果容器组(pod)需要访问 AWS 服务,则必须配置它来使用 Kubernetes 服务账户。服务账户必须关联到有权访问 AWS 服务的 AWS Identity and Access Management(IAM)角色。

  • 现有集群。如果还没有,可以使用开始使用 Amazon EKS 中的指南之一创建一个。

  • 现有 Kubernetes 服务账户和 EKS 容器组身份关联(将服务账户与 IAM 角色关联)。该角色必须具有关联的 IAM 策略,其中包含您希望容器组(pod)必须具有的权限,以便使用 AWS 服务。有关如何创建和配置服务账户和角色的更多信息,请参阅 向 Kubernetes 服务账户分配 IAM 角色

  • 在您的设备或 AWS CLI 上安装和配置的最新版本 AWS CloudShell。您可以使用 aws --version | cut -d / -f2 | cut -d ' ' -f1 检查您的当前版本。yumapt-get 或适用于 macOS 的 Homebrew 等软件包管理器通常比 AWS CLI 的最新版本落后几个版本。要安装最新版本,请参阅《AWS 命令行界面用户指南》中的安装使用 aws configure 快速配置。AWS CloudShell 中安装的 AWS CLI 版本也可能比最新版本落后几个版本。要对其进行更新,请参阅《AWS CloudShell 用户指南》中的将 AWS CLI 安装到您的主目录

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

  • 包含集群配置的现有 kubectl config 文件。要创建 kubectl config 文件,请参阅 通过创建 kubeconfig 文件将 kubectl 连接到 EKS 集群

    1. 使用以下命令创建部署清单,您可以使用该部署清单部署容器组(pod)来确认配置。将示例值替换为您自己的值。

      cat >my-deployment.yaml <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: serviceAccountName: my-service-account containers: - name: my-app image: public.ecr.aws/nginx/nginx:X.XX EOF
    2. 将清单部署到集群。

      kubectl apply -f my-deployment.yaml
    3. 确认容器组(pod)具有所需的环境变量。

      1. 按上一步部署后,查看部署的容器组(pod)。

        kubectl get pods | grep my-app

        示例输出如下。

        my-app-6f4dfff6cb-76cv9 1/1 Running 0 3m28s
      2. 确认容器组(pod)已挂载服务账户令牌。

        kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE:

        示例输出如下。

        AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE: /var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token
    4. 确认您的容器组(pod)可以使用您在附加到角色的 IAM 策略中分配的权限与 AWS 服务进行交互。

      注意

      当容器组(pod)使用来自与服务账户关联的 IAM 角色的 AWS 凭证时,该容器组(pod)中的 AWS CLI 或其他 SDK 包仅使用该角色提供的凭证。如果您不限制对提供给 Amazon EKS 节点 IAM 角色的凭证的访问,容器组(pod)仍然可以访问这些凭证。有关更多信息,请参阅限制对分配给 Worker 节点的实例配置文件的访问

      如果您的容器组(pod)无法按预期与服务进行交互,请完成以下步骤,确认所有配置都正确。

      1. 确认容器组(pod)使用的 AWS SDK 版本支持通过 EKS 容器组身份关联担任 IAM 角色。有关更多信息,请参阅 将容器组身份与 AWS SDK 结合使用

      2. 确认部署正在使用服务账户。

        kubectl describe deployment my-app | grep "Service Account"

        示例输出如下。

        Service Account: my-service-account
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。