为 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 流量。部署了安全组,拒绝所有入站流量并允许所有出站流量。对子网进行标记,以便 Kubernetes 可以向它们部署负载均衡器。有关子网标记的更多信息,请参阅为子网添加标签。有关此类 VPC 的更多信息,请参阅带有单个公有子网的 VPC

  • 仅私有子网 – 此 VPC 有三个部署到区域中的不同可用区的私有子网。所有节点都可以选择通过 NAT 实例或 NAT 网关收发 Internet 流量。部署了安全组,拒绝所有入站流量并允许所有出站流量。对子网进行标记,以便 Kubernetes 可以向它们部署内部负载均衡器。有关子网标记的更多信息,请参阅为子网添加标签。有关此类 VPC 的更多信息,请参阅仅带有私有子网和具有AWS Site-to-Site VPN 访问权限的 VPC

    重要

    如果 VPC 没有出站 Internet 访问,例如通过 NAT 实例、NAT 网关、VPN 或 Direct Connect,则会有其他要求。您必须向节点提供集群证书颁发机构和集群 API 端点,从而绕过 EKS 集群自检。您可能还需要配置中列出的 VPC 终端节点修改集群终端节点访问

重要

如果您使用 eksctl 或者使用任一 Amazon EKS AWS CloudFormation VPC 模板部署了 VPC:

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

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

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

为 Amazon EKS 集群创建 VPC

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

Public and private subnets

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

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

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

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

  4. 对于 Choose a template(选择模板),选择 Specify an Amazon S3 template URL(指定 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. 记录所创建 VPC 的 VpcId。您在启动节点组模板时需要此值。

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

Only public subnets

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

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

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

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

  4. 对于 Choose a template(选择模板),选择 Specify an Amazon S3 template URL(指定 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. 记录所创建 VPC 的 VpcId。您在启动节点组模板时需要此值。

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

Only private subnets

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

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

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

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

  4. 对于 Choose a template(选择模板),选择 Specify an Amazon S3 template URL(指定 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. 记录所创建 VPC 的 VpcId。您在启动节点组模板时需要此值。

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

后续步骤

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