当前,有两个eks集群分别是prod和dev。我试图访问存在于不同aws帐户中的开发集群,它给我一个错误“您必须登录到服务器”
当我尝试获取kubectl版本时,出现错误。请指出我的错误。仅在开发集群中会发生这种情况。如果我在任何地方出错,也请让我知道纠正的步骤。
AWS_PROFILE=eks_admin_dev kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-07-26T20:40:11Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
error: You must be logged in to the server (the server has asked for the client to provide credentials)
AWS_PROFILE=eks_admin_dev kubectl get pods
error: You must be logged in to the server (Unauthorized)
我已经为我的开发用户创建了访问密钥和秘密访问密钥(这是管理员凭据)。我创建了两个配置文件dev和eks_admin_dev。 我了解到source_profile部分正在告诉它使用开发人员配置文件为eks-admin角色执行sts:AssumeRole。
$ aws --version
aws-cli/1.16.45 Python/2.7.12 Linux/4.4.0-1066-aws botocore/1.12.35
$ kubectl config current-context
dev
$ cat ~/.aws/config
[default] ---> prod account
region = us-east-1
[profile eks_admin_dev] ---> dev account
role_arn = arn:aws:iam::xxxxxxxx:role/eks-admin
source_profile = dev
region = us-east
[profile dev] ---> dev account
region = us-east-1
我的凭据:
$ cat ~/.aws/credentials
[old]
aws_secret_access_key = xxxxxxxxxxxxxx
aws_access_key_id = xxxxxxxxx
[default]
aws_access_key_id = xxxxxx
aws_secret_access_key = xxx
[dev]
aws_secret_access_key = xxx
aws_access_key_id = xxx
[eks_admin_dev]
aws_access_key_id = xx
aws_secret_access_key = xx
cat ~/.kube/kubeconfig
,我尝试在此处指定角色,同样的错误。
users:
- name: aws
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
args:
- token
- -i
- dev-0
command: aws-iam-authenticator
env:
- name: AWS_PROFILE
value: eks_admin_dev
答案 0 :(得分:1)
这对我来说既可以在命令行上使用AWS_PROFILE
env,又可以在~/.kube/config
文件中设置env。
我唯一可能想到的事情是,您已经在bash env中为产品帐户预定义了AWS凭证(这些凭证优先于~/.aws/credentials
中的内容。您可以通过以下方法进行检查:< / p>
$ env | grep AWS
AWS_SECRET_ACCESS_KEY=xxxxxxxx
AWS_ACCESS_KEY_ID=xxxxxxxxx
在这种情况下,您可以取消设置它们,或将其从您可能在Shell上找到的任何初始化文件中删除。
$ unset AWS_SECRET_ACCESS_KEY
$ unset AWS_ACCESS_KEY_ID