“kubectl”未从我的本地 Windows 工作站连接到 aws EKS 集群

Tus*_* De 1 amazon-web-services amazon-eks

我正在尝试设置 aws EKS 集群并希望从我的本地 Windows 工作站连接该集群。无法连接。这是我做的步骤;

  1. 创建 aws 服务角色(aws 控制台 -> IAM -> 角色 -> 单击“创建角色”-> 选择 AWS 服务角色“EKS”-> 给角色名称“eks-role-1”
  2. 在 IAM 中创建另一个名为“eks”的用户以进行编程访问。这将帮助我从本地 Windows 工作站连接我的 EKS 集群。我添加到其中的策略是“AmazonEKSClusterPolicy”、“AmazonEKSWorkerNodePolicy”、“AmazonEKSServicePolicy”、“AmazonEKS_CNI_Policy”。
  3. 下一个 EKS 集群已使用在 Step#1 中创建的 roleARN 创建。最后在 aws 控制台中创建了 EKS 集群。
  4. 在我的本地 Windows 工作站中,我下载了“kubectl.exe”和“aws-iam-authenticator.exe”,并使用第 2 步中的访问密钥和令牌为用户“eks”进行了“aws 配置”。配置“~/.kube/config”后;我运行下面的命令并得到这样的错误:

Command:kubectl.exe get svc
Run Code Online (Sandbox Code Playgroud)
output:
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
Unable to connect to the server: getting credentials: exec: exit status 1
Run Code Online (Sandbox Code Playgroud)

不知道这里有什么错误的设置。有人可以帮忙吗?我知道有些地方说您必须使用相同的 aws 用户来连接集群 (EKS)。但是我怎样才能获得 aws 分配角色的访问密钥和令牌(步骤#2:eks-role-1)?

Lie*_* Le 5

对于进入此领域的人,您可能会为 eks 提供个人资料。

EKS 不会在 kubeconfig 中添加配置文件。

解决方案:

  1. 导出 AWS 凭证
$ export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxx
$ export AWS_SECRET_ACCESS_KEY=ssssssssss
Run Code Online (Sandbox Code Playgroud)
  1. 如果您已经配置了 AWS 凭证。尝试导出 AWS_PROFILE
$ export AWS_PROFILE=ppppp
Run Code Online (Sandbox Code Playgroud)
  1. 类似于 2,但你只需要做一次。编辑您的 kubeconfig
users:
- name: eks # This depends on your config.
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      args:
        - "token"
        - "-i"
        - "general"
      env:
        - name: AWS_PROFILE
          value: "<YOUR_PROFILE_HERE>" #
Run Code Online (Sandbox Code Playgroud)