本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Amazon EKS 集群创建 VPC
Amazon Virtual Private Cloud (Amazon VPC) 允许您在已定义的虚拟网络内启动 AWS 资源。这个虚拟网络与您在数据中心中运行的传统网络极其相似,并会为您提供使用
AWS 的可扩展基础设施的优势。有关更多信息,请参阅 Amazon VPC 用户指南和 节点的集群联网解密Amazon EKS。
如果您想要使用现有 VPC,则它必须满足与 Amazon EKS 一起使用的特定要求。有关更多信息,请参阅集群 VPC 注意事项。本主题将指导您使用以下配置之一,为集群创建 VPC:
-
公有子网和私有子网 – 此 VPC 有两个公有子网和两个私有子网。一个公有子网和一个私有子网部署到同一个可用区。其他公有子网和私有子网部署到同一区域的第二个可用区。我们建议所有生产部署使用此选项。此选项允许您将节点部署到私有子网,并允许 Kubernetes 将负载均衡器部署到公有子网,这些子网可以均衡流量以加载到在私有子网中节点上运行的 Pod。
系统自动向部署到其中一个公有子网的资源分配公有 IP 地址,但公有 IP 地址不会分配给部署到私有子网的任何资源。私有子网中的节点可以与集群和其他 AWS 服务进行通信,并且 Pod 可以通过部署在每个 中的 NAT 网关可用区向 Internet 出站通信。部署了安全组,拒绝所有入站流量并允许所有出站流量。对子网进行标记,以便 Kubernetes 能够向它们部署负载均衡器。有关子网标记的更多信息,请参阅子网添加标签要求。有关此类 VPC 的更多信息,请参阅带有公有子网和私有子网 (NAT) 的 VPC。
-
仅公有子网 – 此 VPC 有三个公有子网,部署到区域中的不同可用区。所有节点都将自动分配公有 IP 地址,并可通过 Internet 网关发送和接收 Internet 流量。部署了安全组,拒绝所有入站流量并允许所有出站流量。对子网进行标记,以便 Kubernetes 可以向它们部署负载均衡器。有关子网标记的更多信息,请参阅子网添加标签要求。有关此类 VPC 的更多信息,请参阅带有单个公有子网的 VPC。
-
仅私有子网 – 此 VPC 有三个私有子网,部署到区域中的不同可用区。所有节点都可以选择通过 NAT 实例或 NAT 网关发送和接收 Internet 流量。部署了安全组,拒绝所有入站流量并允许所有出站流量。对子网进行标记,以便 Kubernetes 可以向它们部署内部负载均衡器。有关子网标记的更多信息,请参阅子网添加标签要求。有关此类 VPC 的更多信息,请参阅仅带有私有子网和 AWS 站点到站点 VPN 访问权限的 VPC。
重要 如果 VPC 没有出站 Internet 访问,例如通过 NAT 实例、NAT 网关、VPN 或 Direct Connect,则会有其他要求。您必须通过向节点提供集群证书颁发机构和集群 API 终端节点来绕过 EKS 集群自检。您可能还需要配置修改集群终端节点访问中列出的 VPC 终端节点。
如果您使用 eksctl
或者使用任一 Amazon EKS AWS CloudFormation VPC 模板部署了 VPC:
-
在 March 26, 2020 或之后 – 公有子网将公有 IPv4 地址自动分配给部署到公有子网的新节点。
-
在 March 26, 2020 之前 – 公有子网不会自动将公有 IPv4 地址分配给部署到公有子网的新节点。
此更改通过以下方式影响部署到公有子网的新节点组:
-
托管节点组 – 如果在不早于 April 22, 2020 时节点组部署到公有子网或,则公有子网必须允许自动分配公有 IP 地址。有关更多信息,请参阅修改子网的公有 IPv4 寻址属性。
-
Linux、Windows 或 Arm 自管理节点组 – 如果在 March 26, 2020 或之后将节点组部署到公有子网,则公有子网必须已启用公有 IP 地址的自动分配,否则必须使用公有 IP 地址启动节点。有关更多信息,请参阅修改子网的公有 IPv4 寻址属性或在实例启动期间分配公有 IPv4 地址。
为 Amazon EKS 集群创建 VPC
您可以创建具有公有和私有子网、仅公有子网或仅私有子网的 VPC。
创建带有公有子网和私有子网的集群 VPC
-
从 https://console.amazonaws.cn/cloudformation
打开 AWS CloudFormation 控制台。 -
从导航栏中,选择支持 Amazon EKS 的区域。
-
依次选择 Create stack (创建堆栈) 和 With new resources (standard) (使用新资源(标准))。
-
对于选择一个模板,选择指定 Amazon S3 模板 URL。
-
将与您的集群所在的区域对应的 URL 粘贴到文本区域中,然后选择 Next (下一步):
-
区域之外的所有区域。中国
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
-
北京和宁夏 中国区域。
https://s3.cn-north-1.amazonaws.com.cn/amazon-eks//cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
-
-
在 Specify Details (指定详细信息) 页面上,相应填写参数,然后选择 Next (下一步)。
-
堆栈名称:为您的 AWS CloudFormation 堆栈选择堆栈名称。例如,您可以将其称为 eks-vpc。
-
VpcBlock:为您的 VPC 选择 CIDR 范围。您部署的每个工作线程节点、Pod 和负载均衡器都会从此块中分配一个 IP 地址。默认值为大多数实现提供了足够的 IP 地址,但如果没有,则可以更改它。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 和子网大小调整。您还可以在 VPC 创建后向其添加额外的 CIDR 块。
-
PublicSubnet01Block:为公有子网 1 指定 CIDR 块。默认值为大多数实现提供了足够的 IP 地址,但如果没有,则可以更改它。
-
PublicSubnet02Block:指定公有子网 2 的 CIDR 块。默认值为大多数实现提供了足够的 IP 地址,但如果没有,则可以更改它。
-
PrivateSubnet01Block:为私有子网 1 指定 CIDR 块。默认值为大多数实现提供了足够的 IP 地址,但如果没有,则可以更改它。
-
PrivateSubnet02Block:为私有子网 2 指定 CIDR 块。默认值为大多数实现提供了足够的 IP 地址,但如果没有,则可以更改它。
-
-
(可选)在 Options (选项) 页面上,为您的堆栈资源添加标签。选择 Next (下一步)。
-
在 Review 页面上,选择 Create 。
-
创建堆栈后,在控制台中选中它,然后选择 Outputs (输出)。
-
记录已创建的安全组的 SecurityGroups 值。向集群添加节点时,必须指定安全组的 ID。安全组将应用于您的子网中由 Amazon EKS 创建的弹性网络接口,这些接口允许控制层面与节点进行通信。这些网络接口的描述中包含
Amazon EKS <cluster name>
。 -
记录已创建的 VPC 的 VpcId。您在启动节点组模板时需要此值。
-
记录已创建的子网的 SubnetIds,以及您是将它们创建为公有子网还是私有子网。向集群添加节点时,您必须指定要将节点启动到的子网的 IDs。
创建只带有公有子网的集群 VPC
-
从 https://console.amazonaws.cn/cloudformation
打开 AWS CloudFormation 控制台。 -
从导航栏中,选择支持 Amazon EKS 的区域。
-
依次选择 Create stack (创建堆栈) 和 With new resources (standard) (使用新资源(标准))。
-
对于选择一个模板,选择指定 Amazon S3 模板 URL。
-
将与您的集群所在的区域对应的 URL 粘贴到文本区域中,然后选择 Next (下一步):
-
区域之外的所有区域。中国
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
-
北京和宁夏 中国区域。
https://s3.cn-north-1.amazonaws.com.cn/amazon-eks//cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
-
-
在 Specify Details (指定详细信息) 页面上,相应填写参数,然后选择 Next (下一步)。
-
堆栈名称:为您的 AWS CloudFormation 堆栈选择堆栈名称。例如,您可以将其称为 eks-vpc。
-
VpcBlock:为您的 VPC 选择 CIDR 块。您部署的每个工作线程节点、Pod 和负载均衡器都会从此块中分配一个 IP 地址。默认值为大多数实现提供了足够的 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。向集群添加节点时,您必须指定要将节点启动到的子网的 IDs。
创建只带有私有子网的集群 VPC
-
从 https://console.amazonaws.cn/cloudformation
打开 AWS CloudFormation 控制台。 -
从导航栏中,选择支持 Amazon EKS 的区域。
-
依次选择 Create stack (创建堆栈) 和 With new resources (standard) (使用新资源(标准))。
-
对于选择一个模板,选择指定 Amazon S3 模板 URL。
-
将与您的集群所在的区域对应的 URL 粘贴到文本区域中,然后选择 Next (下一步):
-
区域之外的所有区域。中国
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-fully-private-vpc.yaml
-
北京和宁夏 中国区域。
https://s3.cn-north-1.amazonaws.com.cn/amazon-eks//cloudformation/2020-10-29/amazon-eks-fully-private-vpc.yaml
-
-
在 Specify Details (指定详细信息) 页面上,相应填写参数,然后选择 Next (下一步)。
-
堆栈名称:为您的 AWS CloudFormation 堆栈选择堆栈名称。例如,您可以将其称为 eks-vpc。
-
VpcBlock:为您的 VPC 选择 CIDR 块。您部署的每个工作线程节点、Pod 和负载均衡器都会从此块中分配一个 IP 地址。默认值为大多数实现提供了足够的 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。向集群添加节点时,您必须指定要将节点启动到的子网的 IDs。
后续步骤
在创建了 VPC 后,您可以尝试 Amazon EKS 入门演练,但可以跳过创建您的 Amazon EKS 集群 VPC 部分并且为您的集群使用这些子网和安全组。