将 IPv6 地址分配给您的集群、pods 和服务 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

将 IPv6 地址分配给您的集群、pods 和服务

适用于:使用 Amazon EC2 实例和 Fargate Pods 的 Pods

默认情况下,Kubernetes 将 IPv4 地址分配给您的 Pods 和 services。您可以将集群配置为向其分配 IPv6 地址,而不是将 IPv4 地址分配给 Pods 和 services。Amazon EKS 不支持双堆叠 Pods 或 services,即使 Kubernetes 的 1.23 版本及更高版本中支持此类堆叠也是如此。因此,您无法将 IPv4IPv6 地址同时分配给 Pods 和 services。

创建集群时,您可以选择要用于集群的 IP 系列。集群在创建之后无法更改系列。

注意事项

以下是使用该功能的注意事项:

  • 您必须创建新集群并指定该集群要使用 IPv6 系列。您无法为从前一版本更新的集群启用 IPv6 系列。有关如何创建新集群的说明,请参阅注意事项 。

  • 您部署到集群的 Amazon VPC CNI 附加组件的版本必须为 1.10.1 版或更高版本。默认情况下,会部署此版本或更高版本。部署附加组件后,您无法在不先删除集群所有节点组中的所有节点的情况下将 Amazon VPC CNI 附加组件版本降级到 1.10.1 版以下。

  • 不支持 Windows Pods 和 services。

  • 如果您使用 Amazon EC2 节点,则必须使用 IP 前缀委派和 IPv6 配置 Amazon VPC CNI 附加组件。如果您在创建集群时选择 IPv6 系列,则 1.10.1 版的附加组件默认采用此配置。自行管理或 Amazon EKS 附加组件均为属于此种情况。有关 IP 前缀委派的更多信息,请参阅 为带前缀的 Amazon EKS 节点分配更多 IP 地址

  • 创建集群时,您指定的 VPC 和子网必须具有分配给您指定的 VPC 和子网的 IPv6 CIDR 块。您还必须为其分配一个 IPv4 CIDR 块。这是因为,即使您只想使用 IPv6,VPC 仍然需要 IPv4 CIDR 块才能正常工作。有关更多信息,请参阅《Amazon VPC 用户指南》中的IPv6 CIDR 块与您的 VPC 关联

  • 创建节点时,必须指定配置为自动分配 IPv6 地址的子网。否则,您无法部署节点。默认情况下,将禁用此配置。有关更多信息,请参阅《Amazon VPC 用户指南》中的修改子网的 IPv6 寻址属性

  • 分配给子网的路由表必须有 IPv6 地址的路由。有关更多信息,请参阅《Amazon VPC 用户指南》中的迁移到 IPv6

  • 您的安全组必须允许 IPv6 地址。有关更多信息,请参阅《Amazon VPC 用户指南》中的迁移到 IPv6

  • 您只能将 IPv6 与 Amazon 基于 Nitro 的 Amazon EC2 或 Fargate 节点一起使用。

  • 您可以将 IPv6 用于具有 Amazon EC2 节点和 Fargate 节点的 将安全组分配到单个 pods

  • 如果您以前使用过自定义联网帮助缓解 IP 地址耗尽,您可以改用 IPv6。您不能将自定义联网与 IPv6 一起使用。如果您使用自定义联网进行网络隔离,则可能需要为集群继续使用自定义联网和 IPv4 系列。

  • 您不能将 IPv6Amazon Outposts 一起使用。

  • Kubernetes 服务仅分配 IPv6 地址。系统不会为其分配 IPv4 地址。

  • 将为容器组分配一个 IPv6 地址和一个主机本地 IPv4 地址。主机本地 IPv4 地址是使用与 VPC CNI 关联的主机本地 CNI 插件分配的,并且该地址不会报告给 Kubernetes 控制面板。仅在有容器组需要与其他 Amazon VPC 或互联网中的外部 IPv4 资源通信时才会使用该地址。主机本地 IPv4 地址将(由 VPC CNI)SNAT 转换为 Worker 节点的主 ENI 的主 IPv4 地址。

  • Pods 和 services 只分配了 IPv6 地址。系统不会为其分配 IPv4 地址。由于 Pods 能够通过实例本身上的 NAT 与 IPv4 端点通信,因此不需要 DNS64 和 NAT64。如果流量需要公有 IP 地址,则流量将源网络地址转换为公有 IP。

  • 在 VPC 之外通信时,Pod 的源 IPv6 地址并非转换为节点 IPv6 地址的源网络地址。它使用互联网网关或仅出口互联网网关进行路由。

  • 所有节点均已分配 IPv4IPv6 地址。

  • 不支持 使用适用于 Lustre 的 FSx 存储高性能应用程序

  • 您可以使用 2.3.1 版或更高版本的 Amazon 负载均衡器控制器在 IP 模式(而不是实例模式)下对应用程序 或到 IPv6 Pods 的网络流量进行负载均衡。有关更多信息,请参阅 使用 Amazon 负载均衡器控制器路由互联网流量

  • 您必须将 IPv6 IAM 策略附加到节点 IAM 或 CNI IAM 角色。在两者之间,我们建议您将其附加到 CNI IAM 角色。有关更多信息,请参阅 为使用 IPv6 系列的集群创建 IAM 策略步骤 1:创建 Amazon VPC CNI plugin for Kubernetes IAM 角色

  • 每个 Pod 容器都会收到来自为其部署的子网指定的 CIDR 的 IPv6 地址。运行 Fargate Pods 的底层硬件单元从分配给部署硬件单元的子网的 CIDR 获取唯一的 IPv4IPv6 地址。

  • 我们建议您在部署 IPv6 集群之前对集成的应用程序、Amazon EKS 附加组件和 Amazon 服务进行全面的评估。这是为了确保 IPv6 的所有功能按预期运行。

  • Amazon EKS 不支持使用 Amazon EC2 实例元数据服务 IPv6 端点。

  • 在集群中创建使用 IPv6 系列的自行管理节点组时,用户数据必须包含在节点启动时运行的 bootstrap.sh 文件的以下 BootstrapArguments。使用您集群 VPC 的 IPv6 CIDR 范围替换 your-cidr

    --ip-family ipv6 --service-ipv6-cidr your-cidr

    如果您不知道集群的 IPv6 CIDR 范围,可以使用以下命令查看(需要 Amazon CLI 的 2.4.9 版本或更高版本)。

    aws eks describe-cluster --name my-cluster --query cluster.kubernetesNetworkConfig.serviceIpv6Cidr --output text