为 Amazon EKS 集群创建 VPC - Amazon EKS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

为 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 地址分配给部署到公有子网的新节点。

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

为 Amazon EKS 集群创建 VPC

您可以创建具有公有和私有子网、仅公有子网或仅私有子网的 VPC。

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

  1. https://console.amazonaws.cn/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
    • 北京和宁夏 中国区域。

      https://s3.cn-north-1.amazonaws.com.cn/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. 记录已创建的 VPC 的 VpcId。您在启动节点组模板时需要此值。

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

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

  1. https://console.amazonaws.cn/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
    • 北京和宁夏 中国区域。

      https://s3.cn-north-1.amazonaws.com.cn/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. 记录已创建的 VPC 的 VpcId。您在启动节点组模板时需要此值。

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

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

  1. https://console.amazonaws.cn/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
    • 北京和宁夏 中国区域。

      https://s3.cn-north-1.amazonaws.com.cn/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. 记录已创建的 VPC 的 VpcId。您在启动节点组模板时需要此值。

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

后续步骤

在创建了 VPC 后,您可以尝试 Amazon EKS 入门演练,但可以跳过创建您的 Amazon EKS 集群 VPC 部分并且为您的集群使用这些子网和安全组。