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

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

了解如何将 IPv6 地址分配给集群、容器组(pod)和服务

适用对象:使用 Amazon EC2 实例的容器组(pod)和 Fargate 容器组(pod)

默认情况下,Kubernetes 会将 IPv4 地址分配给容器组(pod)和服务。您可以将集群配置为向其分配 IPv6 地址,而不是将 IPv4 地址分配给容器组(pod)和服务。Amazon EKS 不支持双协议栈容器组(pod)或服务,即使 Kubernetes 的版本 1.23 及更高版本中支持也是如此。因此,您无法将 IPv4IPv6 地址同时分配给容器组(pod)和服务。

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

有关部署 Amazon EKS IPv6 集群的教程,请参阅部署 Amazon EKS IPv6 集群和 Amazon Linux 托管节点

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

IPv6 功能支持

IP 地址分配

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

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

  • 容器组(pod)和服务:容器组(pod)和服务仅分配 IPv6 地址。系统不会为其分配 IPv4 地址。由于容器组(pod)能够通过实例本身上的 NAT 与 IPv4 端点通信,因此不需要 DNS64 和 NAT64。如果流量需要公有 IP 地址,则流量将源网络地址转换为公有 IP。

  • 路由地址:在 VPC 外部通信时,容器组(pod)的源 IPv6 地址并非转换为节点 IPv6 地址的源网络地址。它使用互联网网关或仅出口互联网网关进行路由。

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

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

如何将 IPv6 与 EKS 结合使用。

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

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

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

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

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

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

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

  • 设置负载均衡器:使用 Amazon 负载均衡器控制器版本 2.3.1 或更高版本,对 HTTP 应用程序(通过使用 使用应用程序负载均衡器路由应用程序和 HTTP 流量)或流向 IPv6 容器组(pod)的网络流量(通过在 IP 模式下借助负载均衡器使用 使用网络负载均衡器路由 TCP 和 UDP 流量,不支持实例模式)进行负载均衡。有关更多信息,请参阅 使用 Amazon 负载均衡器控制器路由互联网流量

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

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

  • 添加BootstrapArguments 自行管理的节点组:在集群中创建使用 IPv6 系列的自行管理节点组时,用户数据必须包含在节点启动时运行的 bootstrap.sh 文件的以下 BootstrapArguments。将 your-cidr 替换为集群 VPC 的 IPv6 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