我们的系统使用EKS Kubernetes集群。我们从EC2实例“堡垒主机”中管理它们,在那里我们通过ssh登录,配置我们的凭证,并使用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集群?