作者:何俊雨_127 | 来源:互联网 | 2022-11-30 09:52
从一个空的AWS账户开始,我试图关注https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html
这意味着我创建了一个VPS堆栈,然后安装了aws-iam-authenticator,awscli和kubectl,然后创建了一个具有Programmatic访问权限且直接连接了AmazonEKSAdminPolicy的IAM用户.
然后我使用该网站创建了我的EKS集群,并用于aws configure
设置我的IAM用户的访问密钥和秘密.
aws eks update-kubeconfig --name wr-eks-cluster
工作得很好,但是:
kubectl get svc
error: the server doesn't have a resource type "svc"
无论如何我继续创建我的工作节点堆栈,现在我处于一个死胡同:
kubectl apply -f aws-auth-cm.yaml
error: You must be logged in to the server (the server has asked for the client to provide credentials)
aws-iam-authenticator token -i
似乎工作正常.
我似乎缺少的是,当您创建群集时,您指定了IAM角色,但是当您创建用户时(根据指南),您附加了一个策略.我的用户应该如何访问此群集?
或者最终,如何使用kubectl继续访问我的集群?
1> Ivan Kalita..:
正如文档中所提到的,AWS IAM用户创建的EKS集群自动接收system:master
权限,并且足以使其kubectl
正常工作.您需要使用此用户凭据(AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
)来访问群集.如果您没有创建特定的IAM用户来创建集群,那么您可能使用root AWS账户创建了它.在这种情况下,您可以使用root用户凭据(为Root用户创建访问密钥).
主要的魔力在于aws-auth
集群中的ConfigMap - 它包含IAM实体 - > kubernetes ServiceAccount映射.
我不确定你如何传递凭证aws-iam-authenticator
:
如果你有~/.aws/credentials
,aws_profile_of_eks_iam_creator
那么你可以试试$ AWS_PROFILE=aws_profile_of_eks_iam_creator kubectl get all --all-namespaces
此外,您可以使用环境变量 $ AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY AWS_DEFAULT_REGION=your-region-1 kubectl get all --all-namespaces
它们都应该工作,因为kubectl ...
将使用~/.kube/config
包含aws-iam-authenticator token -i cluster_name
命令的生成.aws-iam-authenticator
使用环境变量或~/.aws/credentials
为您提供令牌.
此外,这个答案可能有助于理解第一个EKS用户创建.