【发布时间】:2021-03-23 08:11:00
【问题描述】:
我们的系统有 EKS kubernetes 集群。我们通过 ssh 进入的 EC2 实例“堡垒主机”管理它们,配置我们的凭证,并使用 kubectl 来管理集群。
我们确实不希望继续在 EC2 主机上手动配置我们的凭据。
因此,我正在尝试将 EC2 实例配置文件与具有适当权限的 EC2 主机相关联以管理集群。但是,它不起作用。
EC2 实例有一个 IAM 实例配置文件,该配置文件与包含此策略的角色相关联(完全 EKS 权限)
{
"Sid": "2",
"Effect": "Allow",
"Action": [
"eks:*"
],
"Resource": "*"
}
因此,当我运行以下命令时,我希望能够列出 EKS 上的活动服务:
[ec2-user@ip-10-0-0-72 ~]$ aws eks update-kubeconfig --name my_eks_cluster_name
[ec2-user@ip-10-0-0-72 ~]$ kubectl get svc
error: the server doesn't have a resource type "svc"
该错误意味着我没有权限。我通过在主机上配置一些 AWS 凭证证明了这一点:
[ec2-user@ip-10-0-0-72 ~]$ export AWS_ACCESS_KEY_ID=...
[ec2-user@ip-10-0-0-72 ~]$ export AWS_SECRET_ACCESS_KEY=...
[ec2-user@ip-10-0-0-72 ~]$ export AWS_SESSION_TOKEN=...
现在,我尝试列出 svc:
[ec2-user@ip-10-0-0-72 ~]$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 172.20.0.1 <none> 443/TCP 85d
有效
为什么 IAM 实例角色不足以让我通过 kubectl 管理我的 EKS 集群?
【问题讨论】:
-
该 IAM 策略实际上并不是集群用于授权 API 调用的策略。它使用将 IAM 角色映射到 k8s 集群角色的配置映射。 docs.aws.amazon.com/eks/latest/userguide/add-user-role.html
-
@jordanm 感谢该链接帮助我弄清楚添加角色映射(EC2 实例配置文件角色 系统:masters k8s 权限),现在 ec2 可以与 EKS 对话
标签: amazon-web-services kubernetes amazon-ec2 amazon-iam amazon-eks