通过创建 kubeconfig 文件将 kubectl 连接到 EKS 集群 - Amazon EKS

通过创建 kubeconfig 文件将 kubectl 连接到 EKS 集群

在本主题中,您将为您的集群创建 kubeconfig 文件(或更新现有文件)。

kubectl 命令行工具使用 kubeconfig 文件中的配置信息与集群的 API 服务器通信。有关更多信息,请参阅 Kubernetes 文档中的 Organizing Cluster Access Using kubeconfig Files(使用 kubeconfig 文件组织集群访问权限)。

Amazon EKS 使用带 kubectlaws eks get-token 命令进行集群身份验证。默认情况下,AWS CLI 使用以下命令返回的相同凭证:

aws sts get-caller-identity
  • 现有 Amazon EKS 集群。要部署一个角色,请参阅 开始使用 Amazon EKS

  • 您的设备或 AWS CloudShell 上安装了 kubectl 命令行工具。该版本可以与集群的 Kubernetes 版本相同,或者最多早于或晚于该版本一个次要版本。例如,如果您的集群版本为 1.29,则可以将 kubectl1.281.291.30 版本与之配合使用。要安装或升级 kubectl,请参阅 设置 kubectl 和 eksctl

  • 在您的设备或 AWS CloudShell 上安装和配置 AWS 命令行界面(AWS CLI)的版本 2.12.3 或更高版本,或版本 1.27.160 或更高版本。要查看当前版本,请使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。软件包管理器(如 yumapt-get 或适用于 macOS 的 Homebrew)通常比 AWS CLI 的最新版本落后几个版本。要安装最新版本,请参阅《AWS 命令行界面用户指南》中的安装使用 aws configure 快速配置。AWS CloudShell 中安装的 AWS CLI 版本也可能比最新版本落后几个版本。要对其进行更新,请参阅《AWS CloudShell 用户指南》中的将 AWS CLI 安装到您的主目录

  • 有权将 eks:DescribeCluster API 操作用于您指定的集群的 IAM 用户或角色。有关更多信息,请参阅 Amazon EKS 基于身份的策略示例。如果您使用自己的 OpenID Connect 提供者提供的身份来访问您的集群,请参阅 Kubernetes 文档中的使用 kubectl 来创建或更新您的 kube config 文件。

自动创建 kubeconfig 文件

  • 在您的设备或 AWS CloudShell 上安装和配置 AWS 命令行界面(AWS CLI)的版本 2.12.3 或更高版本,或版本 1.27.160 或更高版本。要查看当前版本,请使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。软件包管理器(如 yumapt-get 或适用于 macOS 的 Homebrew)通常比 AWS CLI 的最新版本落后几个版本。要安装最新版本,请参阅《AWS 命令行界面用户指南》中的安装使用 aws configure 快速配置。AWS CloudShell 中安装的 AWS CLI 版本也可能比最新版本落后几个版本。要对其进行更新,请参阅《AWS CloudShell 用户指南》中的将 AWS CLI 安装到您的主目录

  • eks:DescribeCluster API 操作用于您指定的集群的权限。有关更多信息,请参阅 Amazon EKS 基于身份的策略示例

    1. 为集群创建或更新 kubeconfig 文件。将 region-code 替换为您的集群所在的 AWS 区域,并将 my-cluster 替换为您的集群的名称。

      aws eks update-kubeconfig --region region-code --name my-cluster

      预设情况下,在主目录的原定设置 kubeconfig 路径 (.kube) 中创建得到的配置文件,或者或与该位置的现有 config 合并。您可以使用 --kubeconfig 选项指定其他路径。

      发出 kubectl 命令时,可以使用 --role-arn 选项指定 IAM 角色 ARN 供身份验证使用。否则,将使用默认 AWS CLI 或 SDK 凭证链中的 IAM 主体。通过运行 aws sts get-caller-identity 命令可以查看默认 AWS CLI 或 SDK 标识。

      对于所有可用选项,运行 aws eks update-kubeconfig help 命令,或请参阅《AWS CLI 命令参考》中的 update-kubeconfig

    2. 测试配置。

      kubectl get svc

      示例输出如下。

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

      如果您收到任何授权或资源类型错误,请参阅故障排除主题中的 未经授权或访问被拒绝 (kubectl)