本页面简要介绍 Google Kubernetes Engine (GKE) 中的 VPC 原生集群。
本页面适用于为组织设计和架构网络的云架构师和网络专家。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务。
概览
在 GKE 中,系统可以根据集群将流量从一个 Pod 路由到另一个 Pod 的方式来区分集群。
使用别名 IP 地址范围的集群称为“VPC 原生集群”。
在 VPC 网络中使用自定义静态路由的集群称为“基于路由的集群”。
与组织的网络架构师、网络管理员或负责定义、实现和维护网络架构的任何其他网络工程师团队一起规划和设计集群配置。
VPC 原生集群的优势
VPC 原生集群具有多种优势:
Pod IP 地址可在集群的 VPC 网络和通过 VPC 网络对等互连与之相连的其他 VPC 网络中进行原生路由。
在集群中创建 Pod 之前,Pod IP 会预留在 VPC 网络中。这可防止与 VPC 网络中其他资源发生冲突,让您更好地规划 IP 地址分配。
Pod IP 地址范围不依赖于自定义静态路由。它们不会消耗系统生成的路由配额和自定义静态路由配额。自动生成的子网路由处理 VPC 原生集群的路由。
您可以创建仅应用于 Pod IP 地址范围而不是集群节点上任何 IP 地址的防火墙规则。
通常,Pod IP 地址范围和子网次要 IP 地址范围可以通过 Cloud Router 与连接到 Cloud VPN 或 Cloud Interconnect 的本地网络访问。
某些功能(例如网络端点组 (NEG))仅适用于 VPC 原生集群。
默认集群网络模式
VPC 原生是 GKE 1.21.0-gke.1500 及更高版本中所有集群的默认网络模式。对于早期版本,默认的集群网络模式取决于集群的创建方式:
下表列出了 GKE 集群版本的默认集群网络模式和集群创建方法。
GKE 版本 | 集群创建方法 | 集群网络模式 |
---|---|---|
所有版本 | Google Cloud 控制台 | VPC 原生 |
1.21.0-gke.1500 及更高版本 | Kubernetes Engine API 或 Google Cloud CLI | VPC 原生 |
您还可以在创建集群时指定 --no-enable-ip-alias
标志来创建基于路由的集群。
VPC 原生集群的 IP 地址范围
创建 VPC 原生集群时,您需要在 VPC 网络中指定子网。该集群使用以下子网 IP 地址范围:
IPv4 地址分配
VPC 原生集群使用指定子网内的不同范围为节点、Pod 和 Service 分配 IPv4 地址,如下所示。
节点 IP 地址:集群利用子网的主要 IPv4 地址范围将 IP 地址分配给所有节点。
Pod IP 地址:集群将子网中的次要 IPv4 地址范围用于集群中的所有 Pod IPv4 地址。为了增强灵活性,您可以通过配置不连续的多 Pod CIDR 来使用其他子网次要 IPv4 地址范围。
Service IP 地址:集群对所有 Service(集群 IP)地址使用单独的次要 IP 地址范围。如需了解如何让多个集群共享同一 Service IPv4 范围,请参阅跨 GKE 集群共享 IP 地址范围。
IPv6 地址分配(双栈网络)
- 节点和 Pod IPv6 地址:在启用了双栈网络的集群中,节点的 IPv6 地址和所有 Pod IPv6 地址都源自节点的指定
/96
IPv6 地址范围。节点 IP 地址本身是此范围内的第一个/128
(单个 IPv6 地址)。如需了解详情,请参阅双栈网络。
下表汇总了节点、Pod 和 Service 的 IP 地址范围:
范围 | 说明 | 示例 |
---|---|---|
节点 |
节点 IP 地址是从与您的集群关联的子网的主要 IP 地址范围中分配的。 节点 IP 地址和 Pod 的子网次要 IP 地址范围大小都会限制集群可支持的节点数量。如需了解详情,请参阅节点限制范围。 |
如果您打算创建一个包含 900 个节点的集群,则该集群的子网的主要 IP 地址范围必须至少为 如需了解详情,请参阅子网主要 IP 地址范围和 Pod 的子网次要 IP 地址范围。 |
pod |
Pod IP 地址取自 Pod 的集群子网次要 IP 地址范围。除非设置的每个节点的最大 Pod 数不同,否则 GKE 会针对每个节点上运行的 Pod 向该节点分配一个 |
对于一个包含 900 个节点、每个节点最多支持 110 个 Pod 的集群,Pod 需要 900 × 256 = 230400 个 IP 地址。(每个节点分配有一个网络掩码大小为 /24 的别名 IP 范围。)此集群需要一个子网,其 Pod 的次要 IP 范围的子网掩码不大于 /14。 该次要 IP 范围为 Pod 提供了 2(32-14) = 218 = 262,144 个 IP 地址。 如需了解详情,请参阅 Pod 的子网次要 IP 地址范围。 |
服务 |
Service(集群 IP)地址取自 Service 的集群子网次要 IP 地址范围。您必须确保此范围足够大,能够为您的集群中托管的所有 Kubernetes Service 提供地址。 在运行 1.27 版及更高版本的 GKE Autopilot 集群以及运行 1.29 版及更高版本的 GKE Standard 集群中,GKE 默认从 GKE 管理的范围为 GKE Service 分配 IP 地址: |
对于运行最多 3000 个 Service 的集群,您需要 3000 个集群 IP 地址。您需要一个大小为 /20 或更大的次要范围。大小为 /20 的 IP 地址范围会生成 2(32-20) = 212 = 4096 个 IP 地址。 如需了解详情,请参阅 Service 的子网次要 IP 地址范围。 |
内部 IP 地址
您用于 VPC 原生集群子网的 IP 地址必须来自有效子网范围。有效范围包括专用 IP 地址(RFC 1918 等)以及以不公开方式使用的公共 IP 地址。如需详细了解有效子网范围,请参阅 VPC 文档中的有效范围和受限范围。
如需了解如何启用这些范围,请参阅使用非 RFC 1918 专用 IP 地址范围。
如需了解如何使用这些范围,请参阅启用以不公开方式使用的公共 IP 地址范围。
次要范围分配方法
您可以将 Pod IP 地址范围和 Service (ClusterIP
) 地址范围分配给 VPC 原生集群。这些 IP 地址范围可以由 GKE 管理,也可以由用户管理。
您必须了解以下主要术语,才能了解次要范围分配方法。
分配:分配 IP 地址范围是将特定子网范围分配给 VPC 原生集群的过程。这将建立一个 IP 地址池,供组件(如 Pod 和 Service)在集群内使用。
管理:管理 IP 地址范围是指在集群、节点池或 Pod 级层正在进行的(创建、更新、删除、读取)CRUD 操作,这些操作与 VPC 原生集群中分配的子网范围和资源分配相关。
GKE 管理的次要范围(默认)
对于运行 1.27 版及更高版本的 GKE Autopilot 集群以及运行 1.29 版及更高版本的 GKE Standard 集群,GKE 默认从 GKE 管理的范围 34.118.224.0/20
为 Service 分配 IP 地址。这样您就无需为 Service 指定自己的 IP 地址范围。需要注意以下几点:
- 您可以视需要使用
--services-ipv4-cidr
标志为 Service 指定自定义范围。 - 如果您使用
--services-ipv4-cidr
标志仅指定范围大小(例如/22
),GKE 仍会使用 Google 管理的范围来获取地址的子范围。 - 使用 Google 管理的范围时,GKE 不会为 Service 创建单独的次要 IP 地址范围。
由用户管理
如需完全控制 IP 地址分配,您可以手动管理 VPC 原生集群的子网。
您可以创建子网的次要 IP 地址范围,然后创建使用这些范围的集群。在创建集群期间,请指定 Pod 和 Service 的子网范围名称。如果您手动创建次要范围,则必须自行管理它们。
在不使用非连续性多 Pod CIDR 的情况下,您可以创建的最小 IP 地址范围为 /28,但该范围仅允许创建 1 个节点(最多包含 8 个 Pod)。您应该使用足够大的范围,以满足您的节点数上限需求。
最小可用范围还取决于每个节点的 Pod 数上限。
如需了解不同的每个节点 Pod 数上限值对应的最小可用 CIDR 范围,请参阅优化 IP 地址分配中的表。
如果您用尽 Pod 的 IP 地址范围,则必须执行以下任一操作:
- 创建具有更大的 Pod 地址范围的新集群。
- 减少节点池的
--max-pods-per-node
后重新创建节点池。 - 使用非连续性多 Pod CIDR 扩展 Pod 的次要 IP 地址范围
与基于路由的集群的差异
Pod 和 Service (ClusterIP) 地址的分配方案不同于基于路由的集群使用的方案。您必须在集群的子网中选择或创建两个次要 IP 地址范围(一个用于 Pod,另一个用于 Service),而不是为 Pod 和 Service 共同指定一个 CIDR。
共享 VPC 注意事项
在共享 VPC 环境中创建 VPC 原生集群时,共享 VPC 宿主项目中的项目所有者、编辑者或具有 Network Admin 角色的 Identity and Access Management (IAM) 主账号必须手动创建集群的子网 IP 地址范围和次要 IP 地址范围。创建集群的服务项目管理员必须至少拥有共享 VPC 网络宿主项目中子网的子网级权限。
在共享 VPC 环境中,次要 IP 地址范围无法通过 GKE 管理。共享 VPC 宿主项目中的 Network Admin 必须先创建子网 IP 范围和次要 IP 地址范围,然后才能创建集群。如需查看如何在共享 VPC 网络中设置 VPC 原生集群的示例,请参阅使用共享 VPC 设置集群。
IP 地址范围规划
以下部分中的信息可以帮助您计算集群所用子网的主要和次要 IP 地址范围的大小。
子网主要 IP 地址范围
在规划主节点 IP 地址范围时,请考虑以下条件:
- 每个子网都必须具有一个主要 IP 地址范围。这是 GKE 用于为内部负载均衡器和节点分配 IP 地址的 IP 地址范围。
- 创建子网后,您无法再缩小或更改子网的主要 IP 地址范围。
- 主要 IP 地址范围的前两个 IP 地址和最后两个 IP 地址由 Google Cloud 预留。
- 使用 Private Service Connect 的集群会使用主要子网范围来预配分配给控制平面端点的内部 IP 地址。不过,您可以使用
private-endpoint-subnetwork
标志替换此 IP 地址预配。如需了解详情,请参阅创建集群并选择控制平面 IP 地址范围。
下表展示了在给定子网主要 IP 地址范围大小和集群配置的情况下,您可以创建的节点数上限:
- 场景 1:使用默认子网的集群中的节点数上限。
- 场景 2:不使用
private-endpoint-subnetwork
标志的 Private Service Connect 集群中的节点数上限。
子网主要 IP 范围 | 场景 1 | 场景 2 |
---|---|---|
/29 子网主要 IP 范围的最小大小 |
4 个节点 | 3 个节点 |
/28 | 12 个节点 | 11 个节点 |
/27 | 28 个节点 | 27 个节点 |
/26 | 60 个节点 | 59 个节点 |
/25 | 124 个节点 | 123 个节点 |
/24 | 252 个节点 | 251 个节点 |
/23 | 508 个节点 | 507 个节点 |
/22 | 1020 个节点 | 1,019 个节点 |
/21 | 2044 个节点 | 2,043 个节点 |
/20 自动模式网络中的子网主要 IP 范围的默认大小 |
4092 个节点 | 4,091 个节点 |
/19 | 8188 个节点 | 8,187 个节点 |
/8 子网主要 IP 范围的最大大小 |
16777212 个节点 | 16,777,211 个节点 |
扩展主要 IP 地址范围
如果主要 IP 地址范围中的 IP 地址已用尽,您可以随时扩展主要 IP 地址范围,即使 Google Cloud 资源(例如负载均衡器和网络端点组)使用该子网也是如此。
在扩展主要 IP 地址范围之前,请考虑以下事项:
- 子网中不得存在重叠的 IP 地址范围。
- GKE 使用主要 IP 地址范围为内部负载均衡器和节点分配 IP 地址。
有用的公式
您可以使用如下公式进行以下计算:
计算指定网络掩码在使用默认子网的集群中可以支持的节点数上限 N。使用 S 表示网络掩码的大小,其有效范围介于
8
和29
之间(含边界值)。N = 2(32 -S) - 4
计算支持最多 N 个节点所需的网络掩码大小 S:
S = 32 - ⌈log2(N + 4)⌉
⌈⌉
是 ceiling (最小整数) 函数,表示向上取整到下一个整数。网络掩码大小的有效范围 S 介于8
和29
之间(含边界值)。
在不使用 private-endpoint-subnetwork
标志的 Private Service Connect 集群中,您可以使用上述公式,但将 N 的值减 1。
Pod 的子网次要 IP 地址范围
仔细规划 Pod 的次要 IP 地址范围。
下表展示了在给定 Pod 使用的子网次要 IP 地址范围大小的情况下,您可以在所有使用该子网的集群中创建的节点数和 Pod 数上限。
此表假定每个节点的 Pod 数上限为 110,这也是默认的 Pod 密度。
Pod 的子网次要 IP 范围 | 最大 Pod IP 地址数 | 最大节点数 | 最大 Pod 数 |
---|---|---|---|
/24 次要范围分配方法由用户管理时的最小 Pod IP 范围 |
256 个地址 | 1 个节点 |
Autopilot:32 个 Pod Standard:110 个 Pod |
/23 仅在次要范围分配方法由用户管理时可用 |
512 个地址 | 2 个节点 |
Autopilot:64 个 Pod Standard:220 个 Pod |
/22 仅在次要范围分配方法由用户管理时可用 |
1024 个地址 | 4 个节点 |
Autopilot:128 个 Pod Standard:440 个 Pod |
/21 次要范围分配方法由 GKE 管理时的最小 Pod IP 范围 |
2048 个地址 | 8 个节点 |
Autopilot:256 个 Pod Standard:880 个 Pod |
/20 | 4096 个地址 | 16 个节点 |
Autopilot:512 个 Pod Standard:1,760 个 Pod |
/19 | 8192 个地址 | 32 个节点 |
Autopilot:1,024 个 Pod Standard:3,520 个 Pod |
/18 | 16384 个地址 | 64 个节点 |
Autopilot:2,048 个 Pod Standard:7,040 个 Pod |
/17 | 32768 个地址 | 128 个节点 |
Autopilot:4,096 个 Pod Standard:14,080 个 Pod |
/16 | 65536 个地址 | 256 个节点 |
Autopilot:8,192 个 Pod Standard:28,160 个 Pod |
/15 | 131072 个地址 | 512 个节点 |
Autopilot:16,384 个 Pod Standard:56,320 个 Pod |
/14 次要范围分配方法由 GKE 管理时 Pod 的子网次要 IP 地址范围的默认大小 |
262144 个地址 | 1024 个节点 |
Autopilot:32,768 个 Pod Standard:112,640 个 Pod |
/13 | 524288 个地址 | 2048 个节点 |
Autopilot:65,536 个 Pod Standard:225,280 个 Pod |
/12 | 1048576 个地址 | 4096 个节点 |
Autopilot:131,072 个 Pod Standard:450,560 个 Pod |
/11 | 2097152 个地址 | 8192 个节点 |
Autopilot:262,144 个 Pod Standard:901,120 个 Pod |
/10 | 4194304 个地址 | 16384 个节点 |
Autopilot:524,288 个 Pod Standard:1,802,240 个 Pod |
/9 最大 pod 地址范围 |
8388608 个地址 | 32768 个节点 |
Autopilot:1,048,576 个 Pod Standard:3,604,480 个 Pod |
如果您更改了每个节点的最大 Pod 数,则可以使用以下公式计算子网的 Pod 次要 IP 地址范围可以支持的最大节点数和 Pod 数:
计算每个节点 Pod 范围的网络掩码大小 M。
M = 31 - ⌈log2(Q)⌉
其中:- Q 是每个节点的 Pod 数
⌈⌉
是 ceiling (最小整数) 函数,表示向上取整到下一个整数- 例如,如果 Q 为 110,则
M = 24
计算用于 Pod 的子网次要 IP 地址范围可支持的最大节点数 N:
N = 2(M - S)
其中:- M 是第一步中计算得出的用于 Pod 的每个节点别名 IP 地址范围的网络掩码大小
- S 是子网的次要 IP 地址范围的子网掩码大小
- 例如,如果 M 为 24,S 为 20,则
N = 16
计算用于 Pod 的子网次要 IP 地址范围可支持的最大 Pod 数 P:
P = N × Q
其中:- N 是在上一步计算得出的最大节点数
- Q 是每个节点的 Pod 数
- 例如,如果 N 为 16,Q 为 110,则
P = 1760
您可以使用不连续的多 Pod CIDR 为 Pod 添加更多 IP 地址。
Service 的子网次要 IP 地址范围
仔细规划 Service 的次要 IP 地址范围。由于这也是一个子网次要 IP 地址范围,因此一旦创建集群,此范围便无法更改。
如果您使用多集群 Service,则 ServiceImport
对象会使用 Service 的次要 IP 地址范围内的 IP 地址。
在运行 1.27 版及更高版本的 GKE Autopilot 集群以及运行 GKE 1.29 版及更高版本的 GKE Standard 集群中,GKE 默认从 GKE 管理的范围 34.118.224.0/20
为 Service 分配 IP 地址。这样您就无需为 Service 指定自己的 IP 地址范围。需要注意以下几点:
- 您可以视需要使用
--services-ipv4-cidr
标志或--services-secondary-range-name
标志为 Service 指定自定义范围。 - 如果您使用
--services-ipv4-cidr
标志仅指定范围大小(例如/22
),GKE 仍会使用 Google 管理的范围来获取地址的子范围。 - 使用 Google 管理的范围时,GKE 不会为 Service 创建单独的次要 IP 地址范围。 GKE 管理的范围不会使用子网的次要 IP 地址范围配额。
下表显示了在给定了 Service 的子网次要 IP 地址范围大小的情况下,您可以在使用该子网的单个集群中创建的最大 Service 数。
Service 的次要 IP 范围 | 最大 Service 数 |
---|---|
/28 次要范围分配方法由用户管理时的最小 Service 地址范围 |
16 个 Service |
/27 次要范围分配方法由 GKE 管理时的最小 Service 地址范围 |
32 个 Service |
/26 | 64 个 Service |
/25 | 128 个 Service |
/24 | 256 个 Service |
/23 | 512 个 Service |
/22 | 1024 个 Service |
/21 | 2048 个 Service |
/20 次要范围分配方法由 GKE 管理时用于 Service 的子网次要 IP 范围的默认大小 |
4096 个 Service |
/19 | 8192 个 Service |
/18 | 16384 个 Service |
/17 | 32768 个 Service |
/16 最大 Service 地址范围 |
65536 个 Service |
跨 GKE 集群共享 IP 地址范围
您可以在同一子网中的集群之间共享主要范围、Pod 的次要 IP 地址范围以及 Service 的次要 IP 地址范围。
此行为适用于标准集群和 Autopilot 集群。
如果您有集中管理集群基础架构的团队,则可能需要共享 IP 地址范围。您可以为 Pod、Service 和节点创建三个范围,并重复使用或共享这些范围(尤其是在共享 VPC 模型中),从而减少开销。这样由于不需要网络管理员为每个集群创建特定子网,因而能够更轻松地管理 IP 地址。
共享节点的主要 IP 地址范围
如果您在子网中创建多个集群,则系统默认会共享节点的主要 IP 地址范围。
共享节点的主要 IP 地址时具有以下限制:
- 如果您对两个或更多 VPC 原生集群共享节点的主要 IP 地址范围,则一个集群可能会使用大部分共享的 Pod IP 地址范围,让没有足够 IP 地址的其他集群进行扩展。
共享 Pod 的次要 IP 地址范围
当您共享 Pod 的次要范围时,每个 Pod 仍会获得唯一的 IP 地址。
共享 Pod 的次要 IP 地址范围时具有以下限制:
如果您对两个或更多 VPC 原生集群共享 Pod 的次要 IP 地址范围,则一个集群可能会使用大部分共享的 IP 地址范围,让没有足够 IP 地址的其他集群进行扩展。
如需共享次要 IP 地址范围,请在命令行中将其与
--cluster-secondary-range
一起传递。在界面中创建集群时,您无法使用共享的次要范围。
共享 Service 的次要 IP 地址范围
使用用户管理的次要范围时,两个或更多集群可以同时将相同的子网次要 IPv4 地址范围用于 Service。
如需将两个或更多集群配置为共享 Service 的共用子网次要 IPv4 地址范围,请在创建每个集群时使用相同的子网次要 IPv4 地址范围。共享 Service 的共用 IPv4 地址范围时不需要单独的配置标志。
共享 Service 的共用 IPv4 地址范围时,每个集群都会在内部使用 Service 的整个子网次要 IPv4 地址范围。Service 的 IP 地址在每个集群的节点内进行编程,但它们不会分配给任何节点的网络接口。Service 的 IP 地址在集群的 VPC 网络中无法路由。Service 的 IP 地址仅供与 Service 位于同一集群中的客户端 Pod 使用。
当 Pod 将数据包发送到 Service IP 地址时,节点上的 iptables 或 eBPF 配置会执行目标网络地址转换 (NAT),将数据包的目标 IP 地址从 Service IP 地址更改为服务 Pod IP 地址。数据包根据目标 Pod IP 地址进行路由。
共享 Service 的次要 IP 地址范围具有以下优势:
- 减少在子网上为 Service 创建的唯一次要 IP 地址范围的数量
- 使用较少的 IP 地址
共享 Service 的次要 IP 地址范围时具有以下限制:
- VPC 范围内的 Cloud DNS for GKE 不支持共享 Service 的次要 IP 地址范围。
您无法共享与以下正则表达式匹配的范围:
^gke-.*-services-[abcdef0-9]{8}
如需共享 Service 的次要 IP 地址范围,请在命令行中将其与
--cluster-secondary-range
一起传递。在界面中创建集群时,您无法使用共享的 Service 次要范围。
节点限制范围
指定 GKE 集群的最大 Pod 数和最大 Service 数受集群次要范围的限制。集群中节点的最大数量受集群子网的主要 IP 地址范围大小和集群的 Pod 地址范围大小的限制。
以下错误消息指示子网的主要 IP 地址范围或集群的 Pod IP 地址范围(用于 Pod 的子网次要 IP 地址范围)已用尽:
Instance [node name] creation failed: IP space of [cluster subnet] is
exhausted
您可以通过扩展主要子网为节点添加更多 IP 地址,或使用不连续的多 Pod CIDR 为 Pod 添加新的 IP 地址。如需了解详情,请参阅 Pod 没有足够的可用 IP 地址空间。
IPv4/IPv6 双栈网络
通过 IPv4/IPv6 双栈网络,您可以定义 GKE 如何将 IP 地址 (ipFamilies
) 分配给以下对象:
- 对于 Pod 和节点,GKE 会同时分配 IPv4 和 IPv6 地址。
- 对于 Service,GKE 会分配单栈(仅 IPv4 或仅 IPv6)或双栈地址。
在 GKE 1.24 版或更高版本中,您可以为独立和共享 VPC 网络上的新 GKE 集群启用双栈网络。您还可以应用启用了双栈网络的网络政策。
优势
双栈网络具有以下优点:
- 启用端到端 IPv6 通信。
- 与网络地址转换 (NAT) 或 IP 隧道相比,性能更佳。这是因为没有 IPv6 到 IPv4 的转换。
可用性
在 GKE 中使用双栈网络具有以下限制:
- 双栈网络仅适用于启用了 GKE Dataplane V2 的 VPC 原生集群。
- 双栈网络仅支持自定义模式 VPC 中的子网。如需了解详情,请参阅 Google Cloud 中的 VPC 网络类型。
- Pod 或节点不支持单栈 IPv6 地址。
- 与仅支持 IPv4 的集群相比,双栈集群需要在每个节点占用额外的内存来支持 IPv4 和 IPv6。在设置大规模集群时,请考虑此特性。
- 双栈集群不支持基于 IPv6 的专用 Google 访问通道。
- GKE 1.26.0-gke.2200 及更高版本支持使用 Cloud DNS 进行集群内部操作和外部 DNS 查询的 IPv6(AAAA 记录)。
ClusterIP
、NodePort
和LoadBalancer
Service 支持双栈 Service。
- Windows 节点不支持 IPv6。
在创建具有双栈网络的集群之前,请考虑上述限制。如需了解详情,请参阅如何创建具有双栈网络的 VPC 原生集群。
公共和专用 IPv6 地址分配
下表总结了具有双栈网络行为的公共和专用 IPv6 地址及其配置:
ipv6-access-type 标志 |
IP 地址分配 | 子网范围 |
---|---|---|
EXTERNAL |
GKE 会分配可路由到互联网的外部 IPv6 地址。 |
2600:1900/28 起
|
INTERNAL |
GKE 会分配无法路由到互联网的内部 IPv6 地址。 具有 |
来自 fd20::/20 (它是整个 ULA 范围的一部分:fc00::/7 )。 |
如需了解详情,请参阅如何将双栈网络用于 VPC 原生集群。
架构
使用 IPv4/IPv6 双栈网络的集群分配了以下范围:
- 将 /64 范围分配给每个子网作为主要范围。
- 从主要范围内分配一个 /96 每节点范围,用作主节点 IP 地址范围。
从主节点 IP 地址范围中分配一个 /112 每节点范围,用作该节点的 Pod IP 地址范围。通过双栈网络,Pod 会从整体 Pod IP 地址范围获取其 IPv6 地址(类似于节点),而不是从预留给 IPv4 地址的 Pod 次要范围中获取。
整体 Pod IP 地址范围由主节点 IP 范围内的非重叠范围组成。因此,此 Pod IP 地址范围是不连续的。
用于 Service 的 /112 范围。此范围来自为 GKE 的次要 Service IP 地址范围预留的 Google 专用地址范围内的 /64 范围。
下图展示了 Google Cloud 和 GKE 如何分配 IPv6 地址:
在该图中,VPC 子网的主要范围为 2600:1900:0:1::/64
,而 GKE Service 的预留范围为 2600:2D00:0:4::0:0/64
。集群中的每个节点都有一个 /96 范围(主节点 IP 地址范围)和一个 /112 范围(Pod IP 地址范围)。此外,集群还具有一个 /112 次要 Service IP 地址范围。
服务
您可以创建 ClusterIP
或 NodePort
类型的 IPv4/IPv6 双栈 Service。运行 1.29 版或更高版本的新 GKE 集群支持 LoadBalancer
类型的双栈 Service。
您可以使用 ClusterIP
、NodePort
或 LoadBalancer
类型的 Service 公开 Deployment。对于每种 Service 类型,您可以将 ipFamilies
和 ipFamilyPolicy
字段定义为 IPv4、IPv6 或双栈 Service。如需了解详情,请参阅有关如何设置 Deployment 的示例。