设置EKS集群的kubeconfig,并在本地使用kubectl进行操作

这是什么?

为了从本地等位置kubectl到EKS集群,需要设置kubeconfig。

环境等

ローカル側

OS: Windows10
コマンドライン: PowerShell
awscli:

バージョン1
aws-cli/1.16.297 Python/2.7.16 Windows/10 botocore/1.13.33

kubectl: 1.14

EKS側

EKS: 1.14

前提
– 现在我只需要一种选项,用中文对以下内容进行释义:前提。

    EKSクラスタが既に作成済

设定

使AWS CLI能用

    • 今回はWindowsだったので、msiでインストールするのみ

 

    • 各OSごとの手順は公式を参考にする

aws eksコマンドを使用するため、バージョンがそれなりに新しい必要あり

これを見るに、恐らく1.16くらいは必要

在 AWS 配置中设置身份验证信息。

    対象のEKSクラスタと同じリージョンを設定すること

設置kubeconfig

PS C:\dev> aws eks update-kubeconfig --name クラスタ名

クラスタ名はEKSサービスの画面から確認できるクラスタ名

ノードのEC2インスタンスのプレフィクスとかではない

执行 kubectl

PS C:\dev> kubectl get pod -o wide
NAME          READY     STATUS    RESTARTS   AGE       IP            NODE                                       NOMINATED NODE   READINESS GATES
cassandra-0   1/1       Running   0          11m       10.0.47.113   ip-10-0-41-23.us-east-2.compute.internal   <none>           <none>
cassandra-1   1/1       Running   0          10m       10.0.32.237   ip-10-0-43-23.us-east-2.compute.internal   <none>           <none>
cassandra-2   1/1       Running   0          8m39s     10.0.50.67    ip-10-0-41-23.us-east-2.compute.internal   <none>           <none>
cassandra-3   1/1       Running   0          7m9s      10.0.50.120   ip-10-0-43-23.us-east-2.compute.internal   <none>           <none>
cassandra-4   1/1       Running   0          5m43s     10.0.52.196   ip-10-0-41-23.us-east-2.compute.internal   <none>           <none>
cassandra-5   1/1       Running   0          4m34s     10.0.50.217   ip-10-0-43-23.us-east-2.compute.internal   <none>           <none>

故障排除

在使用kubectl时出现错误消息。

error: You must be logged in to the server (Unauthorized)

参考公式

亚马逊 EKS 故障排除
https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/troubleshooting.html#unauthorized

The reason

这可能是因为这个集群是由具有AWS身份验证凭据(IAM用户或角色)的集合创建的,但是kubectl可能使用了另一个身份验证凭据集。

由于我创建了EKS集群的IAM用户和在本地设置了认证信息的IAM用户不同,所以正是这个原因导致了问题。

应对

大致上请参考这里。

管理集群用户或IAM角色

kubectl edit -n kube-system configmap/aws-auth
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  mapRoles: |
    - rolearn: arn:aws:iam::555555555555:role/devel-worker-nodes-NodeInstanceRole-74RF4UBDUKL6
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
  mapUsers: |
    - userarn: arn:aws:iam::555555555555:user/admin
      username: admin
      groups:
        - system:masters

只需要在 ConfigMap 的 mapRoles 或 mapUsers 中添加允许 kubectl 的 IAM 角色或 IAM 用户即可。

广告
将在 10 秒后关闭
bannerAds