Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门。为 Amazon EKS 集群创建 VPC
通过 Amazon Virtual Private Cloud (Amazon VPC),您可以将 Amazon 资源启动到您定义的虚拟网络中。这个虚拟网络与您在数据中心中运行的传统网络极其相似,并会为您提供使用的可扩展基础设施的优势Amazon 有关更多信息,请参阅 Amazon VPC 用户指南和 Amazon EKS 节点的集群联网解密。
如果您想要使用现有 VPC,则它必须满足与 Amazon EKS 一起使用的特定要求。有关更多信息,请参阅 集群 VPC 和子网注意事项。本主题将指导您使用以下配置之一,为集群创建 VPC:
-
公有子网和私有子网 – 此 VPC 分别有两个公有和私有子网。一个公有子网和一个私有子网部署到同一个可用区。其他公有子网和私有子网部署到同一 Amazon Web Services 区域的另一个可用区。我们建议所有生产部署使用此选项。此选项允许您将节点部署到私有子网,并允许 Kubernetes 将负载均衡器部署到公有子网,这些负载均衡器可以对在私有子网的节点上运行的 Pod 进行负载均衡。
系统自动向部署到公有子网的节点分配公有 IPv4 地址,但公有 IPv4 地址不会分配给部署到私有子网的节点。如果选择,您还可以将 IPv6 地址分配给公有子网和私有子网中的节点。私有子网中的节点可以与集群和其他 Amazon 服务通信,而且容器可以通过在各个可用区中部署的 NAT 网关 (IPv4) 或仅出口互联网网关 (IPv6) 与 Internet 进行出站通信。部署了安全组,拒绝所有入站流量并允许所有出站流量。对子网进行标记,以便 Kubernetes 能够向它们部署负载均衡器。有关子网标记的更多信息,请参阅为子网添加标签。
有关此类 VPC 的更多信息,请参阅带有公有子网和私有子网 (NAT) 的 VPC。
-
仅公有子网 – 此 VPC 有三个部署到区域中的不同可用区的公有子网。所有节点都会自动分配公有 IPv4 地址,并且可以通过互联网网关发送和接收 Internet 流量。部署了安全组,拒绝所有入站流量并允许所有出站流量。对子网进行标记,以便 Kubernetes 可以向它们部署负载均衡器。有关子网标记的更多信息,请参阅为子网添加标签。有关此类 VPC 的更多信息,请参阅带有单个公有子网的 VPC。
-
仅私有子网 – 此 VPC 有三个部署到 Amazon Web Services 区域中的不同可用区的私有子网。所有节点都可以选择通过 NAT 实例或 NAT 网关收发 Internet 流量。部署了安全组,拒绝所有入站流量并允许所有出站流量。对子网进行标记,以便 Kubernetes 可以向它们部署内部负载均衡器。有关子网标记的更多信息,请参阅为子网添加标签。有关此类 VPC 的更多信息,请参阅仅带有私有子网和具有Amazon Site-to-Site VPN 访问权限的 VPC。
如果 VPC 没有出站 Internet 访问,例如通过 NAT 实例、NAT 网关、仅出口互联网网关、VPN 或 Direct Connect,则会有其他要求。您必须向节点提供集群证书颁发机构和集群 API 端点,从而绕过 EKS 集群自检。您可能还需要配置中列出的 VPC 终端节点修改集群终端节点访问
如果您使用 eksctl
或者使用任一 Amazon EKS Amazon CloudFormation VPC 模板部署了 VPC:
此更改通过以下方式影响部署到公有子网的新节点组:
为 Amazon EKS 集群创建 VPC
您可以创建带有公有子网和私有子网、仅公有子网或仅私有子网的 VPC。选择带有要创建的 VPC 类型描述的选项卡。
- Public and private subnets
-
创建带有公有子网和私有子网的集群 VPC
打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation。
-
从导航栏中,选择一个支持 Amazon EKS 的 Amazon Web Services 区域。
-
依次选择创建堆栈和使用新资源(标准)。
-
在 Prerequisite - Prepare template(先决条件 - 准备模板)下,请确保选中 Template is ready(模板就绪),然后在 Specify template(指定模板)下选择 Amazon S3 URL。
-
您可以创建 IPv4 网络或 IPv6 网络。请将以下 URL 之一粘贴到 Amazon S3 URL 下方的文本区域,然后选择 Next(下一步):
-
IPv4
https://amazon-eks.s3.cn-north-1.amazonaws.com.cn/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
-
IPv6
https://amazon-eks.s3.cn-north-1.amazonaws.com.cn/cloudformation/2020-10-29/amazon-eks-ipv6-vpc-public-private-subnets.yaml
-
在 Specify stack details (指定堆栈详细信息) 页面上,相应填写参数,然后选择 Next (下一步)。
-
堆栈名称:为 Amazon CloudFormation 堆栈选择堆栈名称。例如,您可以将其称为 eks-vpc。名称只能包含字母数字字符(区分大小写)和连字符。该名称必须以字母字符开头,且不得超过 128 个字符。
-
VpcBlock:为您的 VPC 选择 IPv4 CIDR 范围。您部署的每个节点、容器和负载均衡器都会分配有此块中一个 IPv4 地址。默认 IPv4 值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。有关更多信息,请参阅 Amazon VPC 用户指南中的 VPC 和子网大小调整。您还可以在 VPC 创建后向其添加额外的 CIDR 块。如果您要创建 IPv6 VPC,则系统从 Amazon 的 Global Unicast Address 空间自动为您分配 IPv6 CIDR 范围。
-
PublicSubnet01Block:指定公有子网 1 的 IPv4 CIDR 块。默认值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。如果您要创建 IPv6 VPC,则在模板中为您指定此区块。
-
PublicSubnet02Block:指定公有子网 2 的 IPv4 CIDR 块。原定设置值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。如果您要创建 IPv6 VPC,则在模板中为您指定此区块。
-
PrivateSubnet01Block:指定私有子网 1 的 IPv4 CIDR 块。原定设置值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。如果您要创建 IPv6 VPC,则在模板中为您指定此区块。
-
PrivateSubnet02Block:指定私有子网 2 的 IPv4 CIDR 块。原定设置值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。如果您要创建 IPv6 VPC,则在模板中为您指定此区块。
-
(可选)在 Configure stack options(配置堆栈选项)页面上,为堆栈资源添加标签,然后选择 Next(下一步)。
-
在 Review(查看)页面中,选择 Create stack(创建堆栈)。
-
创建堆栈后,在控制台中选中它,然后选择 Outputs (输出)。
-
记录已创建的安全组的 SecurityGroups 值。向集群添加节点时,您必须指定安全组的 ID。安全组应用到 Amazon EKS 在子网中创建的弹性网络接口,从而允许控制层面与您的节点进行通信。这些网络接口的描述中有 Amazon EKS
cluster name
。
-
记录所创建 VPC 的 VpcId。您在启动节点组模板时需要此值。
-
记录已创建子网的 SubnetIds,以及您将其作为公有子网还是私有子网创建。向集群添加节点时,您必须指定要在其中启动节点的子网的 ID。
-
如果您创建了 IPv4 VPC,请不要完成此步骤。如果您创建了 IPv6 VPC,则必须为模板创建的公有子网启用自动分配 IPv6 地址选项。私有子网的该设置已启用。要启用该设置,请完成以下步骤。
通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/。
-
在左侧导航窗格中,选择 Subnets(子网)
-
请选择其中一个公有子网(stack-name
/SubnetPublic01 或 stack-name
/SubnetPublic02,包含 public 字样),然后依次选择 Actions(操作)、Edit subnet settings(编辑子网设置)。
-
请选中 Enable auto-assign IPv6 address(启用自动分配 IPv6 地址)复选框,然后选择 Save(保存)。
-
为另一个公有子网再次完成上述步骤。
- Only public subnets
-
创建只带有公有子网的集群 VPC
打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation。
-
从导航栏中,选择一个支持 Amazon EKS 的 Amazon Web Services 区域。
-
依次选择创建堆栈和使用新资源(标准)。
-
在 Prepare template(准备模板)下,确保选中 Template is ready(模板已就绪),然后在 Template source(模板源)下选择 Amazon S3 URL。
-
将以下 URL 粘贴到 Amazon S3 URL 下方的文本区域,然后选择 Next(下一步):
https://amazon-eks.s3.cn-north-1.amazonaws.com.cn/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
-
在 Specify Details (指定详细信息) 页面上,相应填写参数,然后选择 Next (下一步)。
-
堆栈名称:为 Amazon CloudFormation 堆栈选择堆栈名称。例如,您可以将其称为 eks-vpc。名称只能包含字母数字字符(区分大小写)和连字符。该名称必须以字母字符开头,且不得超过 128 个字符。
-
VpcBlock:为您的 VPC 选择 CIDR 块。您部署的每个节点、容器和负载均衡器都会分配有此块中一个 IPv4 地址。默认 IPv4 值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。有关更多信息,请参阅 Amazon VPC 用户指南中的 VPC 和子网大小调整。您还可以在 VPC 创建后向其添加额外的 CIDR 块。
-
Subnet01Block:指定子网 1 的 CIDR 块。原定设置值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。
-
Subnet02Block:指定子网 2 的 CIDR 块。原定设置值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。
-
Subnet03Block:指定子网 3 的 CIDR 块。原定设置值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。
-
(可选)在 Options (选项) 页面上,为您的堆栈资源添加标签。选择 Next (下一步)。
-
在 Review 页面上,选择 Create。
-
创建堆栈后,在控制台中选中它,然后选择 Outputs (输出)。
-
记录已创建的安全组的 SecurityGroups 值。向集群添加节点时,您必须指定安全组的 ID。安全组应用到 Amazon EKS 在子网中创建的弹性网络接口,从而允许控制层面与您的节点进行通信。这些网络接口的描述中有 Amazon EKS
cluster name
。
-
记录所创建 VPC 的 VpcId。您在启动节点组模板时需要此值。
-
记录已创建的子网的 SubnetIds。向集群添加节点时,您必须指定要在其中启动节点的子网的 ID。
-
(可选)您部署到此 VPC 的任何集群都能够将私有 IPv4 地址分配给您的容器和服务。如果想要部署到此 VPC 的任何集群将私有 IPv6 地址分配给您的容器和服务,则必须对您的 VPC、子网、路由表和安全组进行更新。有关更多信息,请参阅 Amazon VPC 用户指南中的将现有 VPC 从 IPv4 迁移到 IPv6。Amazon EKS 要求您的子网启用 Auto-assign
IPv6 地址选项(该选项默认为禁用)。
- Only private subnets
-
创建只带有私有子网的集群 VPC
打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation。
-
从导航栏中,选择一个支持 Amazon EKS 的 Amazon Web Services 区域。
-
依次选择创建堆栈和使用新资源(标准)。
-
在 Prepare template(准备模板)下,确保选中 Template is ready(模板已就绪),然后在 Template source(模板源)下选择 Amazon S3 URL。
-
将以下 URL 粘贴到 Amazon S3 URL 下方的文本区域,然后选择 Next(下一步):
https://amazon-eks.s3.cn-north-1.amazonaws.com.cn/cloudformation/2020-10-29/amazon-eks-fully-private-vpc.yaml
-
在 Specify Details (指定详细信息) 页面上,相应填写参数,然后选择 Next (下一步)。
-
堆栈名称:为 Amazon CloudFormation 堆栈选择堆栈名称。例如,您可以将其称为 eks-vpc。名称只能包含字母数字字符(区分大小写)和连字符。该名称必须以字母字符开头,且不得超过 128 个字符。
-
VpcBlock:为您的 VPC 选择 CIDR 块。您部署的每个节点、容器和负载均衡器都会分配有此块中一个 IPv4 地址。默认 IPv4 值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。有关更多信息,请参阅 Amazon VPC 用户指南中的 VPC 和子网大小调整。您还可以在 VPC 创建后向其添加额外的 CIDR 块。
-
PrivateSubnet01Block:指定子网 1 的 CIDR 块。原定设置值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。
-
PrivateSubnet02Block:指定子网 2 的 CIDR 块。原定设置值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。
-
PrivateSubnet03Block:指定子网 3 的 CIDR 块。原定设置值为大多数实现提供了足够的 IP 地址,但如果没有提供,那么您可以对其进行更改。
-
(可选)在 Options (选项) 页面上,为您的堆栈资源添加标签。选择 Next (下一步)。
-
在 Review 页面上,选择 Create。
-
创建堆栈后,在控制台中选中它,然后选择 Outputs (输出)。
-
记录已创建的安全组的 SecurityGroups 值。向集群添加节点时,您必须指定安全组的 ID。安全组应用到 Amazon EKS 在子网中创建的弹性网络接口,从而允许控制层面与您的节点进行通信。这些网络接口的描述中有 Amazon EKS cluster
name
。
-
记录所创建 VPC 的 VpcId。您在启动节点组模板时需要此值。
-
记录已创建的子网的 SubnetIds。向集群添加节点时,您必须指定要在其中启动节点的子网的 ID。
-
(可选)您部署到此 VPC 的任何集群都能够将私有 IPv4 地址分配给您的容器和服务。如果想要部署到此 VPC 的任何集群将私有 IPv6 地址分配给您的容器和服务,则必须对您的 VPC、子网、路由表和安全组进行更新。有关更多信息,请参阅 Amazon VPC 用户指南中的将现有 VPC 从 IPv4 迁移到 IPv6。Amazon EKS 要求您的子网启用 Auto-assign
IPv6 地址选项(该选项默认为禁用)。