为 Amazon EKS 集群创建 VPC - Amazon EKS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为 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 类型的说明的选项卡。

Public and private subnets

创建带有公有子网和私有子网的集群 VPC

  1. https://console.aws.amazon.com/cloudformation 打开 AWS CloudFormation 控制台。

  2. 从导航栏中,选择支持 的区域。Amazon EKS.

  3. 依次选择 Create stack (创建堆栈)With new resources (standard) (使用新资源(标准)).

  4. 对于选择一个模板,选择指定 Amazon S3 模板 URL.

  5. 将以下 URL 粘贴到文本区域中,然后选择 Next (下一步):

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
  6. 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 地址,但如果没有,则可以更改它。

  7. (可选)在 Options (选项) 页面上,标记您的堆栈资源。选择 Next.

  8. Review 页面上,选择 Create .

  9. 创建堆栈后,在控制台中选中它,然后选择 Outputs (输出).

  10. 记录已创建的安全组SecurityGroups的值。向集群添加节点时,您必须指定安全组的 ID。安全组将应用于 创建的弹性网络接口,这些接口位于您的子网Amazon EKS中,允许 控制层面与您的节点进行通信。这些网络接口的描述Amazon EKS <cluster name>中包含 。

  11. 记录已创建VpcId的 VPC 的 。您在启动节点组模板时需要此值。

  12. 记录已创建子网SubnetIds的 ,以及您将其创建为公有子网还是私有子网。向集群添加节点时,您必须指定要将节点启动到的IDs子网的 。

Only public subnets

创建只带有公有子网的集群 VPC

  1. https://console.aws.amazon.com/cloudformation 打开 AWS CloudFormation 控制台。

  2. 从导航栏中,选择支持 的区域。Amazon EKS.

  3. 依次选择 Create stack (创建堆栈)With new resources (standard) (使用新资源(标准)).

  4. 对于选择一个模板,选择指定 Amazon S3 模板 URL.

  5. 将以下 URL 粘贴到文本区域中,然后选择 Next (下一步):

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
  6. 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 地址,但如果没有,则可以更改它。

  7. (可选)在 Options (选项) 页面上,标记您的堆栈资源。选择 Next.

  8. Review 页面上,选择 Create .

  9. 创建堆栈后,在控制台中选中它,然后选择 Outputs (输出).

  10. 记录已创建的安全组SecurityGroups的值。向集群添加节点时,您必须指定安全组的 ID。安全组将应用于由 在子网Amazon EKS中创建的弹性网络接口,这些接口允许 控制层面与您的节点进行通信。这些网络接口的描述Amazon EKS <cluster name>中包含 。

  11. 记录已创建VpcId的 VPC 的 。您在启动节点组模板时需要此值。

  12. 记录已创建SubnetIds的子网的 。向集群添加节点时,您必须指定要将节点启动到IDs的子网的 。

Only private subnets

创建只带有私有子网的集群 VPC

  1. https://console.aws.amazon.com/cloudformation 打开 AWS CloudFormation 控制台。

  2. 从导航栏中,选择支持 的区域。Amazon EKS.

  3. 依次选择 Create stack (创建堆栈)With new resources (standard) (使用新资源(标准)).

  4. 对于选择一个模板,选择指定 Amazon S3 模板 URL.

  5. 将以下 URL 粘贴到文本区域中,然后选择 Next (下一步):

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-fully-private-vpc.yaml
  6. 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 地址,但如果没有,则可以更改它。

  7. (可选)在 Options (选项) 页面上,标记您的堆栈资源。选择 Next.

  8. Review 页面上,选择 Create .

  9. 创建堆栈后,在控制台中选中它,然后选择 Outputs (输出).

  10. 记录已创建的安全组SecurityGroups的值。向集群添加节点时,您必须指定安全组的 ID。安全组应用于 在子网中Amazon EKS创建的弹性网络接口,以允许 控制层面与您的节点进行通信。这些网络接口的描述Amazon EKS <cluster name>中包含 。

  11. 记录已创建VpcId的 VPC 的 。您在启动节点组模板时需要此值。

  12. 记录已创建SubnetIds的子网的 。向集群添加节点时,您必须指定要将节点启动到IDs的子网的 。

后续步骤

创建 VPC 后,您可以尝试开始使用 Amazon EKS演练。