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

上次更新时间:2020 年 1 月 20 日

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

简短描述

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

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

解决方法

1.    要确认您的系统上安装的是 AWS CLI 版本1.16.308 或更高版本,请运行以下命令:

$ aws --version

重要提示:您必须在系统上安装 Python 版本 2.7.9 或更高版本。否则,您会收到错误。有关更多信息,请参阅常见问题中的什么是“主机名不匹配”错误?部分。

提示:通常使用适用于 macOS 的 yumapt-gethomebrew 等软件包管理器安装 AWS CLI。要验证您拥有的是 AWS CLI 最新版本,请参阅安装 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 环境变量或使用以下 --kubeconfig 选项指定另一个路径:

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

注意:要在运行 kubectl 命令时进行身份验证,您可以使用 --role-arn 选项为 AWS Identity and Access Management (IAM) 角色指定一个 Amazon 资源名称 (ARN)。否则,请使用您的默认 AWS CLI 或开发工具包凭证链中的 IAM 实体。要查看您的默认 AWS CLI 或开发工具包身份,请运行 aws sts get-caller-identity 命令。

有关更多信息,请参阅 update-kubeconfig

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)