我为什么无法连接到 Amazon EKS 集群?

上次更新日期:2021 年 5 月 7 日

我创建了一个 Amazon Elastic Kubernetes Service(Amazon EKS)集群,但我无法连接到集群。

简短描述

您在创建 Amazon EKS 集群后,必须使用 AWS 命令行界面 (AWS CLI) 配置您的 kubeconfig 文件。此配置使您可以使用 kubectl 命令行连接到您的集群。

以下解决方法向您显示如何使用 AWS CLI update-kubeconfig 命令为您的集群创建 kubeconfig 文件。要在不使用 AWS CLI 的情况下手动更新您的 kubeconfig 文件,请参阅为 Amazon EKS 创建 kubeconfig

注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本

解决方法

1.    确认您的系统安装了 AWS CLI 版本 1.16.308 或更高版本:

$ aws --version

重要提示:您必须在系统上安装 Python 版本 2.7.9 或更高版本。否则,您会收到错误。

提示:通常使用适用于 macOS 的 yumapt-gethomebrew 等软件包管理器安装 AWS CLI。

2.    为集群创建或更新 kubeconfig 文件:

aws eks --region region update-kubeconfig --name cluster_name

注意:请将 region 替换为您的 AWS 区域。将 cluster_name 替换为您的集群名称。

默认情况下,配置文件在您的主目录中的 kubeconfig 路径 ($HOME/.kube/config) 中创建,或在该位置与现有的 kubeconfig 文件合并。对于 Windows,该文件位于 %USERPROFILE%\.kube\config

您也可以通过设置 KUBECONFIG(从 Kubernetes 网站)环境变量或使用以下 --kubeconfig 选项指定其他路径:

$ kubectl get pods --kubeconfig ./.kube/config

注意:要在运行 kubectl 命令时进行身份验证,您可以使用 --role-arn 选项为 AWS Identity and Access Management(IAM)角色指定一个 Amazon Resource Name(ARN)。否则,请使用您的默认 AWS CLI 或开发工具包凭证链中的 IAM 实体。要查看您的默认 AWS CLI 或开发工具包身份,请运行 aws sts get-caller-identity 命令。有关更多信息,请参阅 update-kubeconfig,或完成为 Amazon EKS 创建 kubeconfig 中“手动创建 kubeconfig” 部分的第 6 步。

3.    测试配置:

$ kubectl get svc

示例输出:

NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
svc/kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   1m

注意:如果您收到其他授权或资源类型错误,请参阅未经授权或访问被拒绝(kubectl)