帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
设置 Amazon EKS 容器组身份代理
Amazon EKS 容器组身份关联提供管理应用程序凭证的功能,类似于 Amazon EC2 实例配置文件为 Amazon EC2 实例提供凭证的方式。
Amazon EKS 容器组身份通过额外的 EKS Auth API,以及在每个节点上运行的代理容器组为您的工作负载提供凭证。
提示
您无需在 EKS 自动模式集群上安装 EKS 容器组身份代理。此功能已内置在 EKS 自动模式中。
注意事项
-
默认情况下,EKS 容器组身份代理会侦听
IPv4
和IPv6
地址,以便为容器组请求凭证。对于IPv4
,代理会使用环回(本地主机)IP 地址169.254.170.23
,对于IPv6
,则会使用本地主机 IP 地址[fd00:ec2::23]
。 -
如果禁用
IPv6
地址或以其它方式阻止本地主机IPv6
IP 地址,代理将无法启动。要在无法使用IPv6
的节点上启动代理,请按照 在 EKS 容器组身份代理中禁用 IPv6 中的步骤禁用IPv6
配置。
创建 Amazon EKS 容器组身份代理
代理先决条件
-
现有 Amazon EKS 集群。要部署一个角色,请参阅开始使用 Amazon EKS。集群版本和平台版本必须与 EKS 容器组身份集群版本中列出的版本相同或更高。
-
节点角色有权让代理在 EKS Auth API 中执行
AssumeRoleForPodIdentity
操作。您可以使用 Amazon 托管式策略:AmazonEKSWorkerNodePolicy,或添加类似如下的自定义策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks-auth:AssumeRoleForPodIdentity" ], "Resource": "*" } ] }
可通过标签来限制此操作,以限制使用代理的容器组可以分派哪些角色。
-
节点可以访问 Amazon ECR 并从中下载映像。该附加组件的容器映像位于查看 Amazon EKS 附加组件的 Amazon 容器映像注册表中列出的注册表中。
请注意,您可以在 Amazon Web Services Management Console 中的可选配置设置,以及 Amazon CLI 中的
--configuration-values
更改映像位置并为 EKS 附加组件提供imagePullSecrets
。 -
节点可以访问 Amazon EKS Auth API。对于私有集群,Amazon PrivateLink 中的
eks-auth
端点是必需的。
使用 Amazon 控制台设置代理
-
打开 Amazon EKS 控制台
。 -
在左侧导航窗格中,选择集群,然后为您要配置 EKS 容器组身份代理插件的集群选择集群名称。
-
选择附加组件选项卡。
-
选择获取更多附加组件。
-
选择 EKS 容器组身份代理插件框右上角的框,然后选择下一步。
-
在配置选定插件设置页面上,从版本下拉列表中选择任意版本。
-
(可选)展开可选配置设置以输入其他配置。例如,您可以提供备用容器映像位置和
ImagePullSecrets
。带有已接受键的 JSON 架构显示在附加组件配置架构中。在配置值中输入配置键和值。
-
选择下一步。
-
确认 EKS 容器组身份代理容器组正在您的集群上运行。
kubectl get pods -n kube-system | grep 'eks-pod-identity-agent'
示例输出如下。
eks-pod-identity-agent-gmqp7 1/1 Running 1 (24h ago) 24h eks-pod-identity-agent-prnsh 1/1 Running 1 (24h ago) 24h
现在,您可以在集群中使用 EKS 容器组身份关联。有关更多信息,请参阅 向 Kubernetes 服务账户分配 IAM 角色。
使用 Amazon CLI 设置代理
-
运行以下 Amazon CLI 命令。将
my-cluster
替换为您的集群名称。aws eks create-addon --cluster-name my-cluster --addon-name eks-pod-identity-agent --addon-version v1.0.0-eksbuild.1
注意
EKS 容器组身份代理不将
service-account-role-arn
用于服务账户的 IAM 角色。您必须为 EKS 容器组身份代理提供节点角色的权限。 -
确认 EKS 容器组身份代理容器组正在您的集群上运行。
kubectl get pods -n kube-system | grep 'eks-pod-identity-agent'
示例输出如下。
eks-pod-identity-agent-gmqp7 1/1 Running 1 (24h ago) 24h eks-pod-identity-agent-prnsh 1/1 Running 1 (24h ago) 24h
现在,您可以在集群中使用 EKS 容器组身份关联。有关更多信息,请参阅 向 Kubernetes 服务账户分配 IAM 角色。