开始使用 Amazon EKS – AWS Management Console 和 AWS CLI
本指南帮助您创建通过 AWS Management Console 和 AWS CLI 开始使用 Amazon Elastic Kubernetes Service (Amazon EKS) 所需的所有资源。在本指南中,您将手动创建每个资源。在本教程的最后,将为您提供一个运行中的 Amazon EKS 集群,您可向其部署应用程序。
本指南中的步骤可让您完全了解每个资源的创建方式以及资源之间如何相互交互。如果您希望系统自动为您创建大部分资源,请使用 eksctl
CLI 创建集群和节点。有关更多信息,请参阅 开始使用 Amazon EKS – eksctl。
先决条件
在开始使用本教程之前,您必须安装并配置创建和管理 Amazon EKS 集群所需的以下工具和资源。
-
AWS CLI – 与AWS服务(包括 Amazon EKS)一起使用的命令行工具。本指南要求您使用 2.4.9 版或更高版本,或者 1.22.30 版或更高版本。有关更多信息,请参阅 AWS Command Line Interface 用户指南中的安装、更新和卸载 AWS CLI。在安装 AWS CLI 后,建议您还要对其进行配置。有关更多信息,请参阅 AWS Command Line Interface 用户指南中的如何使用
aws configure
快速配置。 -
kubectl
– 用于与 Kubernetes 集群一起使用的命令行工具。本指南要求您使用 1.21 版或更高版本。有关更多信息,请参阅 安装 kubectl。 -
所需的 IAM 权限 – 您正在使用的 IAM 安全主体必须具有使用 Amazon EKS IAM 角色和服务相关角色的权限、AWS CloudFormation 以及 VPC 和相关资源。有关更多信息,请参阅 IAM 用户指南中的用于 Amazon Elastic Kubernetes Service 的操作、资源和条件密钥和使用服务相关角色。您必须以同一用户身份完成本指南中的所有步骤。
第 1 步:创建 Amazon EKS 集群
为了尽可能简单快速地入门,本主题包括创建具有原定设置的集群的步骤。创建用于生产用途的集群前,我们建议您熟悉所有设置,并使用符合您要求的设置部署集群。有关更多信息,请参阅 创建 Amazon EKS 集群。一些设置仅在创建集群时可以启用。
创建集群的步骤
-
创建具有公有和私有子网且符合 Amazon EKS 要求的 Amazon VPC。请将
region-code
替换为 Amazon EKS 支持的任何 AWS 区域。有关 AWS 区域列表,请参阅 AWS 一般参考中的 Amazon EKS 端点和配额。可以将my-eks-vpc-stack
替换为您任选的名称。aws cloudformation create-stack \ --region
region-code
\ --stack-namemy-eks-vpc-stack
\ --template-url https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml提示 如需查看上一个命令创建的所有资源的列表,请前往 https://console.aws.amazon.com/cloudformation
打开 AWS CloudFormation 控制台。选择 my-eks-vpc-stack
堆栈,然后选择 Resources(资源)选项卡。 -
创建一个集群 IAM 角色,并将所需的 Amazon EKS IAM 托管式策略附加到该角色。Amazon EKS 托管的 Kubernetes 集群会代表您调用其他AWS服务,以管理您用于该服务的资源。
-
将以下内容复制到名为
的文件中。cluster-role-trust-policy.json
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
创建角色。
aws iam create-role \ --role-name
myAmazonEKSClusterRole
\ --assume-role-policy-document file://"cluster-role-trust-policy.json
" -
将所需的 Amazon EKS 托管 IAM 策略附加到角色。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \ --role-name
myAmazonEKSClusterRole
-
访问 https://console.aws.amazon.com/eks/home#/clusters
打开 Amazon EKS 控制台。 确保控制台右上角显示的 AWS 区域是您要在其中创建集群的 AWS 区域。如果不是,请选择 AWS 区域名称旁边的下拉菜单,然后选择要使用的 AWS 区域。
-
请选择 Add cluster(添加集群),然后选择 Create(创建)。如果没有看到此选项,请先选择左侧导航面板中的 Amazon EKS Clusters(集群)。
-
在 Configure cluster(配置集群)页面上,执行以下操作:
-
输入集群的 Name(名称),例如
my-cluster
。 -
对于 Cluster Service Role(集群服务角色),请选择
myAmazonEKSClusterRole
。 -
其余设置保留为默认值,然后选择 Next(下一步)。
-
-
在 Specify networking(指定联网)页面中,执行以下操作:
-
请从 VPC 下拉列表中选择在上一步创建的 VPC ID。此 ID 形如
vpc-00x0000x000x0x000
|my-eks-vpc-stack-VPC
。 -
其余设置保留为默认值,然后选择 Next(下一步)。
-
-
请在 Configure logging(配置日志记录)页面上,选择 Next(下一步)。
-
请在 Review and create(审核和创建)页面上,选择 Create(创建)。
集群名称右侧的集群状态会保持为 Creating(正在创建)几分钟,直至集群调配过程完成。在该状态变为 Active(有效)之前,请勿继续执行下一步。
注意 您可能会收到一个错误,指示请求中的可用区之一没有足够容量来创建 Amazon EKS 集群。如果发生这种情况,错误输出将包含可支持新集群的可用区。再次尝试使用至少两个位于您账户中支持的可用区的子网创建集群。有关更多信息,请参阅 容量不足。
第 2 步:将计算机配置为与您的集群通信
在本部分中,您将为集群创建一个 kubeconfig
文件。此文件中的设置会启用 kubectl
CLI 与您的集群进行通信。
将计算机配置为与您的集群通信的步骤
-
为集群创建或更新
kubeconfig
文件。将region-code
替换为您在其中创建该集群的 AWS 区域,并将my-cluster
替换为该集群的名称。aws eks update-kubeconfig --region
region-code
--namemy-cluster
预设情况下,
config
文件创建在~/.kube
中或者新集群的配置已添加到~/.kube
的现有config
文件中。 -
测试配置。
kubectl get svc
注意 如果您收到任何授权或资源类型错误,请参阅故障排除部分中的未经授权或访问被拒绝 (kubectl)。
输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP
1m
第 3 步:创建节点
为了尽可能简单快速地入门,本主题包括创建具有原定设置的节点的步骤。在创建用于生产用途的节点之前,我们建议您熟悉所有设置,并使用符合您要求的设置部署节点。有关更多信息,请参阅 Amazon EKS 节点。一些设置仅在创建节点时可以启用。
您可以使用下列节点类型之一创建集群。要了解有关各个类型的更多信息,请参阅 Amazon EKS 节点。部署集群后,您可以添加其他节点类型。
-
Fargate - Linux - 如果要在 AWS Fargate 上运行 Linux 应用程序,请选择此类型的节点。Fargate 是一种无服务器计算引擎,允许部署 Kubernetes 容器而不管理 Amazon EC2 实例。
-
托管节点 - Linux - 如果要在 Amazon EC2 实例上运行 Amazon Linux 应用程序,请选择此类型的节点。虽然本指南中未作介绍,但您还可以向集群添加 Windows 自托管节点和 Bottlerocket 节点。
第 4 步:查看资源
您可以查看节点和 Kubernetes 工作负载。
查看节点和工作负载
-
在左侧导航窗格中,选择 Amazon EKS Clusters(集群)。然后,在 Clusters(集群)列表中,选择您创建的集群名称,例如
my-cluster
。 -
在
my-cluster
页面上,请执行以下操作:
第 5 步:删除资源
在使用完成针对本教程而创建的集群和节点后,应删除这些资源。如果要在删除资源前对此集群执行更多操作,请参阅 后续步骤。
删除您按照本指南中的说明创建的资源
-
请删除您创建的任何节点组或 Fargate 配置文件。
-
从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters
。 -
在左侧导航窗格中,选择 Amazon EKS Clusters(集群)。请在集群列表中,选择
my-cluster
。 -
请选择 Configuration(配置)选项卡,然后选择 Compute(计算)选项卡。
-
如果您创建了节点组,请选择
my-nodegroup
节点组,然后选择 Delete(删除)。输入
,然后选择删除。my-nodegroup
-
请选择您创建的每个 Fargate 配置文件,然后选择 Delete(删除)。请输入配置文件的名称,然后选择 Delete(删除)。
注意 删除第二个 Fargate 配置文件时,您可能需要等待第一个配置文件完成删除。
-
在节点组或 Fargate 配置文件删除后再继续操作。
-
-
请删除集群。
-
在左侧导航窗格中,选择 Amazon EKS Clusters(集群)。请在集群列表中,选择
my-cluster
。 -
选择 Delete Cluster (删除集群)。
-
输入
,然后选择 Delete(删除)。请在集群删除后再继续操作。my-cluster
-
-
删除创建的 VPC AWS CloudFormation 堆栈。
-
打开 AWS CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
请选择
my-eks-vpc-stack
堆栈,然后选择 Delete(删除)。 -
请在 Delete
my-eks-vpc-stack
(删除 my-eks-vpc-stack)确认对话框中,选择 Delete stack(删除堆栈)。
-
-
删除您创建的 IAM 角色。
-
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在左侧导航窗格中,选择 Roles (角色)。
-
请从列表中选择您创建的每个角色(
myAmazonEKSClusterRole
,以及myAmazonEKSFargatePodExecutionRole
或myAmazonEKSNodeRole
)。请选择 Delete(删除),输入请求的确认文本,然后选择 Delete(删除)。
-
后续步骤
以下文档主题可帮助您扩展集群的此功能。
创建集群的 IAM 实体(用户或角色)是唯一可以使用
kubectl
调用 Kubernetes API 服务器的 IAM 用户。如果希望其他用户可以访问您的集群,请参阅 让 IAM 用户和角色有权访问您的集群。将示例应用程序部署到您的集群。
在部署集群用于生产用途前,我们建议您熟悉集群和节点的所有设置。创建集群时必须进行一些设置(例如启用 SSH 访问 Amazon EC2 节点)。
为了提高集群的安全性,将 Amazon VPC Container Networking Interface 插件配置为使用 IAM 角色作为服务账户.