为 Amazon EKS 集群创建 VPC - Amazon EKS
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:

  • 在 2020 年 3 月 26 日之后 – 公有子网将公有 IPv4 地址自动分配给部署到公有子网的新节点。

  • 在 2020 年 3 月 26 日之前 – 公有子网不会将公有 IPv4 地址自动分配给部署到公有子网的新节点。

此更改通过以下方式影响部署到公有子网的新节点组:

为 Amazon EKS 集群创建 VPC

您可以创建带有公有子网和私有子网、仅公有子网或仅私有子网的 VPC。选择带有要创建的 VPC 类型描述的选项卡。

Public and private subnets

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

  1. 打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

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

  3. 依次选择创建堆栈使用新资源(标准)

  4. Prerequisite - Prepare template(先决条件 - 准备模板)下,请确保选中 Template is ready(模板就绪),然后在 Specify template(指定模板)下选择 Amazon S3 URL

  5. 您可以创建 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
  6. 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,则在模板中为您指定此区块。

  7. (可选)在 Configure stack options(配置堆栈选项)页面上,为堆栈资源添加标签,然后选择 Next(下一步)。

  8. Review(查看)页面中,选择 Create stack(创建堆栈)。

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

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

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

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

  13. 如果您创建了 IPv4 VPC,请不要完成此步骤。如果您创建了 IPv6 VPC,则必须为模板创建的公有子网启用自动分配 IPv6 地址选项。私有子网的该设置已启用。要启用该设置,请完成以下步骤。

    1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

    2. 在左侧导航窗格中,选择 Subnets(子网)

    3. 请选择其中一个公有子网(stack-name/SubnetPublic01stack-name/SubnetPublic02,包含 public 字样),然后依次选择 Actions(操作)、Edit subnet settings(编辑子网设置)。

    4. 请选中 Enable auto-assign IPv6 address(启用自动分配 IPv6 地址)复选框,然后选择 Save(保存)。

    5. 为另一个公有子网再次完成上述步骤。

Only public subnets

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

  1. 打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

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

  3. 依次选择创建堆栈使用新资源(标准)

  4. Prepare template(准备模板)下,确保选中 Template is ready(模板已就绪),然后在 Template source(模板源)下选择 Amazon S3 URL

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

    https://amazon-eks.s3.cn-north-1.amazonaws.com.cn/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
  6. 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 地址,但如果没有提供,那么您可以对其进行更改。

  7. (可选)在 Options (选项) 页面上,为您的堆栈资源添加标签。选择 Next (下一步)

  8. Review 页面上,选择 Create

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

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

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

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

  13. (可选)您部署到此 VPC 的任何集群都能够将私有 IPv4 地址分配给您的容器和服务。如果想要部署到此 VPC 的任何集群将私有 IPv6 地址分配给您的容器和服务,则必须对您的 VPC、子网、路由表和安全组进行更新。有关更多信息,请参阅 Amazon VPC 用户指南中的将现有 VPC 从 IPv4 迁移到 IPv6。Amazon EKS 要求您的子网启用 Auto-assign IPv6 地址选项(该选项默认为禁用)。

Only private subnets

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

  1. 打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

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

  3. 依次选择创建堆栈使用新资源(标准)

  4. Prepare template(准备模板)下,确保选中 Template is ready(模板已就绪),然后在 Template source(模板源)下选择 Amazon S3 URL

  5. 将以下 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
  6. 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 地址,但如果没有提供,那么您可以对其进行更改。

  7. (可选)在 Options (选项) 页面上,为您的堆栈资源添加标签。选择 Next (下一步)

  8. Review 页面上,选择 Create

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

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

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

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

  13. (可选)您部署到此 VPC 的任何集群都能够将私有 IPv4 地址分配给您的容器和服务。如果想要部署到此 VPC 的任何集群将私有 IPv6 地址分配给您的容器和服务,则必须对您的 VPC、子网、路由表和安全组进行更新。有关更多信息,请参阅 Amazon VPC 用户指南中的将现有 VPC 从 IPv4 迁移到 IPv6。Amazon EKS 要求您的子网启用 Auto-assign IPv6 地址选项(该选项默认为禁用)。