为什么无法连接到 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 的 yum、apt-get 或 homebrew 等软件包管理器安装 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)。