创建 Amazon EKS 集群
本主题概述了可用选项,并介绍了创建 Amazon EKS 集群时需要考虑的内容。如果您需要在 Amazon Outpost 上创建集群,请参阅 Amazon Outposts 上的 Amazon EKS 的本地集群。如果您是首次创建 Amazon EKS 集群,我们建议您按照我们的 开始使用 Amazon EKS 指南之一操作。这些指南可帮助您创建一个简单的默认集群,而无需扩展到所有可用选项。
先决条件
-
满足 Amazon EKS 要求的现有 VPC 和子网。在部署集群用于生产用途前,我们建议您彻底了解 VPC 和子网要求。如果您没有 VPC 和子网,则可以使用 Amazon EKS 提供的 Amazon CloudFormation 模板创建它们。
-
您的设备或 Amazon CloudShell 上安装了
kubectl
命令行工具。该版本可以与集群的 Kubernetes 版本相同,或者最多早于或晚于该版本一个次要版本。例如,如果您的集群版本为1.24
,则可以将kubectl
的1.23
、1.24
或1.25
版本与之配合使用。要安装或升级kubectl
,请参阅 安装或更新 kubectl。 -
您的设备或 Amazon CloudShell 上安装并配置了
2.11.3
版或更高版本,或1.27.93
版或更高版本的 Amazon CLI。您可以使用aws --version | cut -d / -f2 | cut -d ' ' -f1
检查您的当前版本。软件包管理器(如yum
、apt-get
或适用于 macOS 的 Homebrew)通常比 Amazon CLI 的最新版本落后几个版本。要安装最新版本,请参阅《Amazon Command Line Interface 用户指南》中的安装、更新和卸载 Amazon CLI 和使用aws configure
进行快速配置。Amazon CloudShell 中安装的 Amazon CLI 版本也可能比最新版本落后几个版本。要对其进行更新,请参阅《Amazon CloudShell 用户指南》中的将 Amazon CLI 安装到您的主目录。 -
具有
create
和describe
Amazon EKS 集群权限的 IAM 主体。有关更多信息,请参阅 在 Outpost 上创建本地 Kubernetes 集群 和 列出或描述所有集群:
创建 Amazon EKS 集群后,创建集群的 IAM 主体将作为管理员永久添加到 Kubernetes RBAC 授权表中。该主体拥有 system:masters
权限。该主体在您的集群配置中不可见。因此,重要的是要注意创建集群的主体并确保永远不会删除它。最初,仅创建服务器的 IAM 主体可以使用 kubectl
调用 Kubernetes API 服务器。如果使用控制台创建集群,则必须确保在集群上运行 kubectl
命令时,相同的 IAM 凭证位于 Amazon 开发工具包凭证链中。创建集群后,您可以向其他 IAM 主体授予对集群的访问权限。
创建 Amazon EKS 集群
如果您已经拥有集群 IAM 角色,或者您将使用
eksctl
创建集群,则可以跳过此步骤。默认情况下,eksctl
会为您创建角色。创建 Amazon EKS 集群 IAM 角色
-
运行以下命令以创建 IAM 信任策略 JSON 文件。
cat >
eks-cluster-role-trust-policy.json
<<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
创建 Amazon EKS 集群 IAM 角色。如有必要,使用您在上一步中将文件写入到的计算机上的路径为
eks-cluster-role-trust-policy.json
添加前言。该命令将您在上一步中创建的信任策略与角色关联。要创建 IAM 角色,必须为正在创建角色的 IAM 主体分配iam:CreateRole
操作(权限)。aws iam create-role --role-name
myAmazonEKSClusterRole
--assume-role-policy-document file://"eks-cluster-role-trust-policy.json
" -
将名为
AmazonEKSClusterPolicy
的 Amazon EKS 托管 IAM policy 附加到角色。要将 IAM policy 附加到某个 IAM 主体,必须为附加该策略的主体分配以下 IAM 操作(权限)之一: iam:AttachUserPolicy
或iam:AttachRolePolicy
。aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name
myAmazonEKSClusterRole
-
-
创建 Amazon EKS 集群。
您可以使用
eksctl
、Amazon Web Services Management Console 或 Amazon CLI 创建集群。 -
如果您使用
eksctl
创建了集群,则可以跳过此步骤。这是因为eksctl
已经为您完成了此步骤。通过向kubectl
config
文件添加新上下文来启用kubectl
与您的集群通信。有关如何创建和更新文件的更多信息,请参阅 为 Amazon EKS 集群创建或更新 kubeconfig 文件。aws eks update-kubeconfig --region
region-code
--namemy-cluster
输出示例如下。
Added new context arn:aws:eks:
region-code
:111122223333
:cluster/my-cluster
to/home/username/
.kube/config -
通过运行以下命令以确认与集群的通信。
kubectl get svc
输出示例如下。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 28h
(建议)要使用某些 Amazon EKS 附加组件,或启用个别 Kubernetes 工作负载以具有特定 Amazon Identity and Access Management(IAM)权限,请为集群创建 IAM OpenID Connect(OIDC)提供商。您只需为集群创建一次 IAM OIDC 提供商。要了解有关 Amazon EKS 附加组件的详情,请参阅 Amazon EKS 附加组件。要了解有关将特定 IAM 权限分配给工作负载的详情,请参阅 服务账户的 IAM 角色。
(推荐)在将 Amazon EC2 节点部署到集群之前为 Amazon VPC CNI plugin for Kubernetes 插件配置集群。默认情况下,该插件随集群一起安装。当您将 Amazon EC2 节点添加到集群时,插件将自动部署到您添加的每个 Amazon EC2 节点上。该插件要求您将以下 IAM policy 之一附加到 IAM 角色:
-
AmazonEKS_CNI_Policy
托管 IAM policy – 如果您的集群使用IPv4
系列 -
您创建的 IAM policy – 如果您的集群使用
IPv6
系列
您将策略附加到的 IAM 角色可以是节点 IAM 角色,也可以是仅用于插件的专用角色。我们建议将策略附加到此角色。有关创建角色的更多信息,请参阅 配置 Amazon VPC CNI plugin for Kubernetes 将 IAM 角色用于服务账户 或 Amazon EKS 节点 IAM 角色。
-
如果您使用 Amazon Web Services Management Console 部署了集群,则可以跳过此步骤。Amazon Web Services Management Console在默认情况下会部署 Amazon VPC CNI plugin for Kubernetes、CoreDNS、
kube-proxy
Amazon EKS 附加组件。如果您使用
eksctl
或 Amazon CLI 部署集群,则 Amazon VPC CNI plugin for Kubernetes、CoreDNS 和kube-proxy
自行管理的附加组件将会被部署。您可以将使用您的集群部署的 Amazon VPC CNI plugin for Kubernetes、CoreDNS 和kube-proxy
自行管理的附加组件迁移到 Amazon EKS 附加组件中。有关更多信息,请参阅Amazon EKS 附加组件。-
如果您计划将工作负载部署到使用 Amazon EBS 卷的集群,并且您创建了
1.23
或更高版本的集群,则在部署工作负载之前,您必须将 Amazon EBS CSI 驱动程序 安装到您的集群。
向您建议的后续步骤:
-
创建集群的 IAM 主体是唯一可以访问集群的主体。向其他 IAM 主体授予权限,以便它们可以访问您的集群。
-
如果创建集群的 IAM 主体仅具有先决条件中引用的最低 IAM 权限,则您可能想要为该主体添加额外的 Amazon EKS 权限。有关向 IAM 主体授予 Amazon EKS 权限的更多信息,请参阅适用于 Amazon EKS 的身份和访问管理。
-
如果您希望创建集群的 IAM 主体或任何其他主体在 Amazon EKS 控制台中查看 Kubernetes 资源,请向实体授予 所需的权限。
-
如果您希望节点和 IAM 主体从 VPC 内访问您的集群,请为集群启用私有端点。默认情况下,将启用公有端点。如需要,可以在启用私有端点后禁用公有端点。有关更多信息,请参阅Amazon EKS 集群端点访问控制。