

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 通过创建 kubeconfig 文件将 kubectl 连接到 EKS 集群
<a name="create-kubeconfig"></a>

**提示**  
 [注册参加](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el)即将举办的 Amazon EKS 讲习会。

在本主题中，您将为您的集群创建 `kubeconfig` 文件（或更新现有文件）。

`kubectl` 命令行工具使用 `kubeconfig` 文件中的配置信息与集群的 API 服务器通信。有关更多信息，请参阅 Kubernetes 文档中的[使用 kubeconfig 文件组织集群访问](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/)。

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

```
aws sts get-caller-identity
```
+ 现有 Amazon EKS 集群。要部署一个角色，请参阅[开始使用 Amazon EKS](getting-started.md)。
+ 您的设备或 AWS CloudShell 上安装了 `kubectl` 命令行工具。该版本可以与集群的 Kubernetes 版本相同，或者最多早于或晚于该版本一个次要版本。例如，如果您的集群版本为 `1.29`，则可以将 `kubectl` 的 `1.28`、`1.29` 或 `1.30` 版本与之配合使用。要安装或升级 `kubectl`，请参阅 [设置 `kubectl` 和 `eksctl`](install-kubectl.md)。
+ 在您的设备或 AWS CloudShell 上安装和配置 AWS 命令行界面（AWS CLI）的版本 `2.12.3` 或更高版本，或版本 `1.27.160` 或更高版本。要查看当前版本，请使用 `aws --version | cut -d / -f2 | cut -d ' ' -f1`。`yum`、`apt-get` 或适用于 macOS 的 Homebrew 等软件包管理器通常比 AWS CLI 的最新版本落后几个版本。要安装最新版本，请参阅《AWS 命令行界面用户指南》**中的[安装](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)和[使用 aws configure 快速配置](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)。AWS CloudShell 中安装的 AWS CLI 版本也可能比最新版本落后几个版本。要对其进行更新，请参阅《AWS CloudShell 用户指南》**中的[将 AWS CLI 安装到您的主目录](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software)。
+ 有权将 `eks:DescribeCluster` API 操作用于您指定的集群的 IAM 用户或角色。有关更多信息，请参阅 [Amazon EKS 基于身份的策略示例](security-iam-id-based-policy-examples.md)。如果您使用自己的 OpenID Connect 提供者提供的身份来访问集群，请参阅 Kubernetes 文档中的[使用 kubectl](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-kubectl) 来创建或更新 `kube config` 文件。

## 自动创建 `kubeconfig` 文件
<a name="create-kubeconfig-automatically"></a>
+ 在您的设备或 AWS CloudShell 上安装和配置 AWS 命令行界面（AWS CLI）的版本 `2.12.3` 或更高版本，或版本 `1.27.160` 或更高版本。要查看当前版本，请使用 `aws --version | cut -d / -f2 | cut -d ' ' -f1`。`yum`、`apt-get` 或适用于 macOS 的 Homebrew 等软件包管理器通常比 AWS CLI 的最新版本落后几个版本。要安装最新版本，请参阅《AWS 命令行界面用户指南》**中的[安装](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)和[使用 aws configure 快速配置](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)。AWS CloudShell 中安装的 AWS CLI 版本也可能比最新版本落后几个版本。要对其进行更新，请参阅《AWS CloudShell 用户指南》**中的[将 AWS CLI 安装到您的主目录](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software)。
+ 将 `eks:DescribeCluster` API 操作用于您指定的集群的权限。有关更多信息，请参阅 [Amazon EKS 基于身份的策略示例](security-iam-id-based-policy-examples.md)。

  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 主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)。通过运行 `aws sts get-caller-identity` 命令可以查看默认 AWS CLI 或 SDK 标识。

     对于所有可用选项，运行 `aws eks update-kubeconfig help` 命令，或请参阅《AWS CLI 命令参考》**中的 [update-kubeconfig](https://docs.aws.amazon.com/cli/latest/reference/eks/update-kubeconfig.html)。

  1. 测试配置。

     ```
     kubectl get svc
     ```

     示例输出如下。

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

     如果您收到任何授权或资源类型错误，请参阅故障排除主题中的 [未经授权或访问被拒绝 (`kubectl`)](troubleshooting.md#unauthorized)。