Amazon EKS VPC 和子网要求和注意事项 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon EKS VPC 和子网要求和注意事项

在创建集群时,您将指定 VPC 以及位于不同可用区中的至少两个子网。本主题概述了 Amazon EKS 对于您用于集群的 VPC 和子网的特定要求和注意事项。如果您没有与 Amazon EKS 结合使用的 VPC,则可以使用 Amazon EKS 提供的 Amazon CloudFormation 模板创建一个。如果您要在 Amazon Outposts 上创建本地或扩展集群,请参阅 Amazon EKS 本地集群 VPC 及子网的要求和注意事项 而不是本主题。

VPC 要求和注意事项

在创建集群时,您指定的 VPC 必须满足以下要求和注意事项:

  • VPC 必须有足够数量的 IP 地址来供集群、任何节点和您想要创建的其他 Kubernetes 资源使用。如果要使用的 VPC 没有足够数量的 IP 地址,请尝试增加可用 IP 地址的数量。您可以通过关联其他无类别域间路由(CIDR)块与 VPC 来执行此操作。您可以在创建集群之前或之后将私有(RFC 1918)和公有(非 RFC 1918)CIDR 块与您的 VPC 关联。集群识别与 VPC 关联的 CIDR 块最多可能需要五个小时的时间。

    您可以通过将中转网关与共享服务 VPC 结合使用来节省 IP 地址的使用。有关更多信息,请参阅具有共享服务的隔离 VPC混合网络中的 Amazon EKS VPC 可路由 IP 地址保护模式

  • 如果您想让 Kubernetes 分配 IPv6 地址给 pods 和服务,请将 IPv6 CIDR 块与您的 VPC 关联。有关更多信息,请参阅《Amazon VPC 用户指南》中的IPv6 CIDR 块与您的 VPC 关联您必须有 ICP 异常才能使用 IPv6,因为 Amazon IPv6 CIDR 来自公有 IP 地址范围。有关更多信息,请参阅《下载中国 ICP 指南》。您可以在 Amazon Web Services Management Console 中启动该请求

  • VPC 必须具有 DNS 主机名和 DNS 解析支持。否则,节点无法注册到集群。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 的 DNS 属性

  • VPC 可能需要使用 Amazon PrivateLink 的 VPC 节点。有关更多信息,请参阅子网要求和注意事项

如果您使用 Kubernetes 1.14 或更早版本创建集群,Amazon EKS 会将以下标签添加到您的 VPC 中:

密钥
kubernetes.io/cluster/my-cluster owned

此标签仅由 Amazon EKS 使用。您可以在不影响服务的情况下删除标签。它不适用于版本 1.15 或更高版本的集群。

子网要求和注意事项

在创建集群时,Amazon EKS 将在您指定的子网中创建 2–4 个弹性网络接口。这些网络接口可实现集群和 VPC 之间的通信。这些网络接口还支持 Kubernetes 功能,例如 kubectl execkubectl logs。每个 Amazon EKS 创建的网络接口的描述中都有 Amazon EKS cluster-name 文本。

当您创建集群时,Amazon EKS 可以在您指定的任何子网中创建其网络接口。创建集群后,您无法更改 Amazon EKS 在哪些子网中创建其网络接口。当您更新集群的 Kubernetes 版本时,Amazon EKS 会删除其创建的原始网络接口,然后创建新的网络接口。这些网络接口可以在与原始网络接口相同的子网中创建,也可以在与原始网络接口不同的子网中创建。要控制在哪些子网中创建网络接口,可以在创建集群时将指定的子网数限制为只有两个子网。

您在创建集群时指定的子网必须满足以下要求:

  • 每个子网必须至少有六个 IP 地址以供 Amazon EKS 使用。但是,我们建议至少使用 16 个 IP 地址。

  • 子网不能驻留在 Amazon Outposts、Amazon Wavelength 或 Amazon 本地区域中。但是,如果您的 VPC 中有这些子网,则可以向这些类型的子网部署自行管理的节点和 Kubernetes 资源。

  • 子网必须使用基于 IP 地址的命名。Amazon EKS 不支持 Amazon EC2 基于资源的名称

  • 子网可以是公有子网或私有子网。但是,如果可能,我们建议您指定私有子网。公有子网是指包含路由表的子网,这个路由表中包含指向互联网网关的路由,而私有子网是指具有一个其中不包含指向互联网网关的路由的路由表的子网。

您可以将节点和 Kubernetes 资源部署到您在创建集群时指定的相同子网。但是,这并不是必要的。这是因为,您还可以将节点和 Kubernetes 资源部署到您在创建集群时未指定的子网。如果您将节点部署到不同的子网,Amazon EKS 不会在这些子网中创建集群网络接口。您向其中部署节点和 Kubernetes 资源的任何子网必须满足以下要求:

  • 子网必须有足够的可用 IP 地址才能将所有节点和 Kubernetes 资源部署到其中。

  • 子网必须使用基于 IP 地址的命名。Amazon EKS 不支持 Amazon EC2 基于资源的名称

  • 如果您想让 Kubernetes 分配 IPv6 地址到 pods 和服务,您必须拥有一个 IPv6 CIDR 块和一个与您的子网相关联的 IPv4 CIDR 块。有关更多信息,请参阅《Amazon VPC 用户指南》中的IPv6 CIDR 块与您的子网关联您必须有 ICP 异常才能使用 IPv6,因为 Amazon IPv6 CIDR 来自公有 IP 地址范围。有关更多信息,请参阅《下载中国 ICP 指南》。您可以在 Amazon Web Services Management Console 中启动该请求与子网关联的路由表必须包含到 IPv4IPv6 地址的路由。有关更多信息,请参阅《Amazon VPC 用户指南》中的路由。容器组(pod)只分配了 IPv6 地址。但是,Amazon EKS 为您的集群和您的节点创建的网络接口被分配了 IPv4IPv6 地址。

  • 如果您需要从互联网入站访问您的 pods,请确保至少有一个公有子网具有足够的可用 IP 地址,以便将负载均衡器和入口部署到其中。您可以将负载均衡器部署到公有子网。负载均衡器可以对私有或公有子网中的 pods 进行负载均衡。我们建议尽可能将节点部署到私有子网。

  • 如果您计划将节点部署到公有子网,则该子网必须自动分配 IPv4 公有地址IPv6 地址。如果您将节点部署到具有关联的 IPv6 CIDR 块的私有子网,则该私有子网还必须自动分配 IPv6 地址。如果您使用 Amazon EKS Amazon CloudFormation 模板在 2020 年 3 月 26 日之后部署您的 VPC,此设置已启用。如果您在此日期之前使用模板部署 VPC,或者您使用自己的 VPC,则必须手动启用此设置。有关更多信息,请参阅《Amazon VPC 用户指南》中的修改您的子网的公有 IPv4 寻址属性修改您的子网的 IPv6 寻址属性

  • 如果您将节点部署到的子网是私有子网,且其路由表不包含到网络地址转换(NAT)设备IPv4)或仅限出口的网关IPv6)的路由,则添加使用 Amazon PrivateLink 的 VPC 端点到您的 VPC。您的节点和 pods 需要与之通信的所有 Amazon Web Services 都需要 VPC 端点。示例包括 Amazon ECR、Elastic Load Balancing、Amazon CloudWatch、Amazon Security Token Service 和 Amazon Simple Storage Service(Amazon S3)。端点必须包括节点所在的子网。并非所有 Amazon Web Services 都支持 VPC 端点。有关更多信息,请参阅什么是 Amazon PrivateLink?与 Amazon PrivateLink 集成的 Amazon 服务。有关更多 Amazon EKS 要求的列表,请参阅 私有集群要求

  • 如果要将负载均衡器部署到子网,则子网必须具有以下标签:

    • 私有子网

      密钥
      kubernetes.io/role/internal-elb 1
    • 公有子网

      密钥
      kubernetes.io/role/elb 1

当创建版本为 1.18 和更低版本的 Kubernetes 集群时,Amazon EKS 会将以下标签添加到指定的所有子网。

密钥
kubernetes.io/cluster/my-cluster shared

当您创建新 Kubernetes 集群时,Amazon EKS 不会将该标签添加到您的子网中。如果标签位于以前版本低于 1.19 的集群使用的子网上,则当该集群更新为较新版本时,不会自动从子网上移除该标签。版本 2.1.1 或更低版本的 Amazon Load Balancer Controller 需要此标签。如果您使用的是较新版本的负载均衡器控制器,则可以删除该标签,而不会中断您的服务。

如果您使用 eksctl 或者任一 Amazon EKS Amazon CloudFormation VPC 模板部署了 VPC,则以下情况适用:

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

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