通过创建 kubeconfig 文件将 kubectl 连接到 EKS 集群
在本主题中,您将为您的集群创建 kubeconfig
文件(或更新现有文件)。
kubectl
命令行工具使用 kubeconfig
文件中的配置信息与集群的 API 服务器通信。有关更多信息,请参阅 Kubernetes 文档中的 Organizing Cluster Access Using kubeconfig Files
Amazon EKS 使用带 kubectl
的 aws eks get-token
命令进行集群身份验证。默认情况下,AWS CLI 使用以下命令返回的相同凭证:
aws sts get-caller-identity
-
现有 Amazon EKS 集群。要部署一个角色,请参阅 开始使用 Amazon EKS。
-
您的设备或 AWS CloudShell 上安装了
kubectl
命令行工具。该版本可以与集群的 Kubernetes 版本相同,或者最多早于或晚于该版本一个次要版本。例如,如果您的集群版本为1.29
,则可以将kubectl
的1.28
、1.29
或1.30
版本与之配合使用。要安装或升级kubectl
,请参阅 设置 kubectl 和 eksctl。 -
在您的设备或 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 命令行界面用户指南》中的安装和使用 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
。软件包管理器(如yum
、apt-get
或适用于 macOS 的 Homebrew)通常比 AWS CLI 的最新版本落后几个版本。要安装最新版本,请参阅《AWS 命令行界面用户指南》中的安装和使用 aws configure 快速配置。AWS CloudShell 中安装的 AWS CLI 版本也可能比最新版本落后几个版本。要对其进行更新,请参阅《AWS CloudShell 用户指南》中的将 AWS CLI 安装到您的主目录。 -
将
eks:DescribeCluster
API 操作用于您指定的集群的权限。有关更多信息,请参阅 Amazon EKS 基于身份的策略示例。-
为集群创建或更新
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。 -
测试配置。
kubectl get svc
示例输出如下。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
如果您收到任何授权或资源类型错误,请参阅故障排除主题中的 未经授权或访问被拒绝 (kubectl)。
-