设置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 用户即可。