Kubernetes KUBECTL错误:服务器要求客户端提供凭据

Kubernetes KUBECTL错误:服务器要求客户端提供凭据,kubernetes,amazon-eks,Kubernetes,Amazon Eks,目前,有两个eks群集a prod和dev。我正在尝试访问存在于不同aws帐户中的dev群集,它给我一个错误“您必须登录到服务器” 当我试图得到kubectl版本时,我得到了一个错误。请指出我的错误。这仅在dev集群中发生。如果我在任何地方出错,请告诉我纠正的步骤 AWS_PROFILE=eks_admin_dev kubectl version Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", G

目前,有两个eks群集a prod和dev。我正在尝试访问存在于不同aws帐户中的dev群集,它给我一个错误“您必须登录到服务器”

当我试图得到kubectl版本时,我得到了一个错误。请指出我的错误。这仅在dev集群中发生。如果我在任何地方出错,请告诉我纠正的步骤

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_概要文件部分告诉它使用dev概要文件为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

我可以使用命令行上的
AWS\u PROFILE
env,也可以在
~/.kube/config
文件中设置env

我认为唯一可能发生的事情是,您已经在bash env中为您的prod帐户预定义了AWS凭据(这些凭据优先于
~/.AWS/credentials
中的凭据)。您可以检查以下内容:

$ env | grep AWS
AWS_SECRET_ACCESS_KEY=xxxxxxxx
AWS_ACCESS_KEY_ID=xxxxxxxxx
如果是这种情况,您可以取消设置它们,或者从shell上的任何init文件中删除它们

$ unset AWS_SECRET_ACCESS_KEY
$ unset AWS_ACCESS_KEY_ID

仍然是相同的问题如果您将默认配置文件临时设置为您的开发人员帐户以进行调试怎么办?您是否使用了正确的凭据?是的,我尝试只在新服务器中安装该开发人员配置文件(这是默认配置文件)但我也遇到了同样的错误,当我在新服务器上执行env | grep AWS时,它会给我提供准确的开发配置文件凭据。有什么方法可以排除故障吗?您的开发密钥是否已在IAM中启用?检查该密钥是否已在IAM控制台上的IAM上使用过,我尝试承担AWS sts sts的角色——角色arn:AWS:IAM::xxxxxxxxx:role/eks admin--角色会话名称测试它为我提供了输出,因此我认为我的凭据很好。您是如何创建EKS群集的?它是由arn:aws:iam::xxxxxxxx:role/EKS admin角色创建的?还是与您的用户在web控制台中创建的?