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

上次更新日期:2021 年 6 月 23 日

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

简短描述

创建 Amazon EKS 集群后,必须使用 AWS Command Line Interface (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.    检查当前身份,验证您使用的是具有 Amazon EKS 集群权限的正确凭证:

aws sts get-caller-identity

注意:创建 Amazon 集群的 AWS Identity and Access Management (IAM) 实体用户或角色将在创建集群时自动获得权限。这些权限在控制平面中集群的 RBAC 配置中授予。还可以在 aws-auth ConfigMap 中向 IAM 用户或角色授予 Amazon EKS 集群的访问权限。在原定设置中,AWS IAM Authenticator for Kubernetes 使用配置的 AWS CLI 或 AWS 开发工具包身份。请参阅管理集群的用户或 IAM 角色

3.    为集群创建或更新 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 选项指定 IAM 角色 Amazon Resource Name (ARN)。否则,请使用您的默认 AWS CLI 或 AWS SDK 凭证链中的 IAM 实体。有关更多信息,请参阅 update-kubeconfig,或者完成为 Amazon EKS 创建 kubeconfig中“手动创建 kubeconfig”部分的第 6 步。

4.    测试配置:

$ kubectl get svc

示例输出:

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

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