通过创建 kubeconfig 文件将 kubectl 连接到 EKS 集群 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

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

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

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

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

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

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

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

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

自动创建 kubeconfig 文件

先决条件
  • 在您的设备或 Amazon CloudShell 上安装和配置了 Amazon Command Line Interface(Amazon CLI)的版本 2.12.3 或更高版本,或版本 1.27.160 或更高版本。要查看当前版本,请使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。软件包管理器(如 yumapt-get 或适用于 macOS 的 Homebrew)通常比 Amazon CLI 的最新版本落后几个版本。要安装最新版本,请参阅《Amazon Command Line Interface 用户指南》中的安装、更新和卸载 Amazon CLI,以及使用 aws configure 快速配置。Amazon CloudShell 中安装的 Amazon CLI 版本也可能比最新版本落后几个版本。如需更新,请参阅《Amazon CloudShell 用户指南》中的将 Amazon CLI 安装到主目录

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

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

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

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

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

    对于所有可用选项,运行 aws eks update-kubeconfig help 命令,或请参阅《Amazon CLI Command Reference》中的 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)