自动创建的防火墙规则


本页面介绍 Google Kubernetes Engine (GKE) 在 Google Cloud 中自动创建的防火墙规则

除了本页面所列 GKE 专用规则之外,默认的 Google Cloud 项目还包括预先填充的防火墙规则。GKE 集群通常部署在 VPC 网络中。这些规则可为 GKE 集群授予必要的网络访问权限。这些规则足以满足基本集群操作的需求,但您可能需要根据具体需求创建其他规则。

防火墙规则

创建以下资源时,GKE 会自动创建防火墙规则:

  • GKE 集群
  • GKE Service
  • GKE Gateway 和 HTTPRoute
  • GKE Ingress

除非另有说明,否则所有自动创建的防火墙规则的优先级均为 1000,这是防火墙规则的默认值。如果您希望更好地控制防火墙行为,则可以创建具有更高优先级的防火墙规则。优先级较高的防火墙规则会在自动创建的防火墙规则之前应用。

GKE 集群防火墙规则

创建集群时,GKE 会创建以下入站防火墙规则:

名称 用途 源代码 目标(用于定义目的地) 协议和端口 优先级
gke-[cluster-name]-[cluster-hash]-master 仅适用于专用 Autopilot 集群和 Standard 集群。 允许控制层面访问集群节点上的 Kubelet 和指标服务器。 仅适用于专用 Autopilot 集群。 允许控制层面访问集群节点上的 Kubelet 和指标服务器。 控制层面 IP 地址范围 (/28) 节点标记 TCP:443(指标服务器)和 TCP:10250 (kubelet) 1000
gke-[cluster-name]-[cluster-hash]-vms

用于 Kubernetes 网络模型所需的集群内通信。 允许在节点上运行的软件将具有与来源匹配的节点 IP 地址的数据包发送到集群中的目标 Pod IP 地址和节点 IP 地址。例如,此规则允许的流量包括:

  • 从系统守护程序(如 kubelet)发送到集群的节点和 Pod IP 地址目标的数据包。
  • 从在 Pod 中运行的软件(具有 hostNetwork:true 设置)发送到集群的节点和 Pod IP 地址目标的数据包。
节点 IP 地址范围或此节点 IP 地址范围的超集:
  • 对于自动模式 VPC 网络,GKE 会使用 10.128.0.0/9 CIDR,因为该范围包含自动创建的子网当前和未来的所有子网主要 IPv4 地址范围。
  • 对于自定义模式 VPC 网络,GKE 会使用集群子网的主要 IPv4 地址范围。
如果您扩展集群子网的主要 IPv4 范围,GKE 不会更新此防火墙规则的来源 IPv4 范围。如果您扩展集群子网的主要 IPv4 范围,则必须手动创建必要的入站防火墙规则
节点标记 TCP:1-65535、UDP:1-65535、ICMP 1000
gke-[cluster-name]-[cluster-hash]-all 按照 Kubernetes 网络模型的要求,允许集群上所有 Pod 之间的流量。

Pod CIDR

对于启用了连续的多 Pod CIDR 的集群,则为集群使用的所有 Pod CIDR 地址块。

节点标记 TCP、UDP、SCTP、ICMP、ESP、AH 1000
gke-[cluster-hash]-ipv6-all 仅适用于双栈网络集群。允许集群上的节点与 Pod 之间的流量。

subnetIpv6CidrBlock 中分配的同一 IP 地址范围。

节点标记 TCP、UDP、SCTP、ICMP for IPv6、ESP、AH 1000
gke-[cluster-name]-[cluster-hash]-inkubelet 允许在运行 1.23.6 版或更高版本的新 GKE 集群中通过内部 Pod CIDR 和节点 CIDR 访问端口 10255(Kubelet 只读端口)。运行高于 1.26.4-gke.500 版的集群则改用 Kubelet 身份验证端口 (10250)。请勿在集群内添加会阻止 10250 的防火墙规则。

内部 Pod CIDR 和节点 CIDR。

节点标记 TCP:10255 999
gke-[cluster-name]-[cluster-hash]-exkubelet 在运行 1.23.6 版或更高版本的新 GKE 集群中拒绝对端口 10255 的公开访问。

0.0.0.0/0

节点标记 TCP:10255 1000

GKE Service 防火墙规则

创建 Service 时,GKE 会创建以下入站防火墙规则:

名称 用途 源代码 目标(用于定义目的地) 协议和端口
k8s-fw-[loadbalancer-hash] 允许入站流量到达 Service。 来源来自 spec.loadBalancerSourceRanges。如果省略 spec.loadBalancerSourceRanges,则默认为 0.0.0.0/0

如需了解详情,请参阅防火墙规则和来源 IP 地址许可名单

LoadBalancer 虚拟 IP 地址 Service 清单中指定的端口上的 TCP 和 UDP。
k8s-[cluster-id]-node-http-hc externalTrafficPolicy 设置为 Cluster 时,允许外部直通网络负载均衡器服务的健康检查
  • 130.211.0.0/22
  • 35.191.0.0/16
  • 209.85.152.0/22
  • 209.85.204.0/22
LoadBalancer 虚拟 IP 地址 TCP:10256
k8s-[loadbalancer-hash]-http-hc externalTrafficPolicy 设置为 Local 时,允许外部直通网络负载均衡器服务的健康检查
  • 130.211.0.0/22
  • 35.191.0.0/16
  • 209.85.152.0/22
  • 209.85.204.0/22
节点标记 spec.healthCheckNodePort 定义的 TCP 端口。如果省略 spec.healthCheckNodePort,则默认为 TCP 端口号 10256

如需了解详情,请参阅健康检查端口

k8s-[cluster-id]-node-hc externalTrafficPolicy 设置为 Cluster 时,允许内部直通网络负载均衡器服务的健康检查
  • 130.211.0.0/22
  • 35.191.0.0/16
  • 209.85.152.0/22
  • 209.85.204.0/22
节点标记 TCP:10256
[loadbalancer-hash]-hc externalTrafficPolicy 设置为 Local 时,允许内部直通网络负载均衡器服务的健康检查
  • 130.211.0.0/22
  • 35.191.0.0/16
  • 209.85.152.0/22
  • 209.85.204.0/22
节点标记 spec.healthCheckNodePort 定义的 TCP 端口。如果省略 spec.healthCheckNodePort,则默认为 TCP 端口号 10256

如需了解详情,请参阅健康检查端口

k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash] 在启用以下其中一项时,允许入站流量到达 Service:
  • GKE 子集
  • 基于后端服务的外部直通网络负载均衡器
  • 来源来自 spec.loadBalancerSourceRanges。如果省略 spec.loadBalancerSourceRanges,则默认为 0.0.0.0/0

    如需了解详情,请参阅防火墙规则和来源 IP 地址许可名单

    LoadBalancer 虚拟 IP 地址 Service 清单中指定的端口上的 TCP 和 UDP。
    k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fw externalTrafficPolicy 设置为 Local 且启用了以下任一项时,允许对 Service 进行健康检查
  • GKE 子集
  • 基于后端服务的外部直通网络负载均衡器
    • 130.211.0.0/22
    • 35.191.0.0/16
    • 209.85.152.0/22
    • 209.85.204.0/22
    LoadBalancer 虚拟 IP 地址 spec.healthCheckNodePort 定义的 TCP 端口。如果省略 spec.healthCheckNodePort,则默认为 TCP 端口号 10256

    如需了解详情,请参阅健康检查端口

    k8s2-[cluster-id]-l4-shared-hc-fw externalTrafficPolicy 设置为 Cluster 且启用了以下任一项时,允许对 Service 进行健康检查
  • GKE 子集
  • 基于后端服务的外部直通网络负载均衡器
    • 130.211.0.0/22
    • 35.191.0.0/16
    • 209.85.152.0/22
    • 209.85.204.0/22
    节点标记 TCP:10256
    gke-[cluster-name]-[cluster-hash]-mcsd 允许控制层面访问多集群服务的集群节点上的 Kubelet 和指标服务器。此规则的优先级为 900。 健康检查 IP 地址 节点标记 TCP、UDP、SCTP、ICMP、ESP、AH

    GKE Gateway 防火墙规则

    创建 GatewayHTTPRoute 资源时,GKE 会创建以下网关防火墙规则:

    名称 用途 源代码 目标(用于定义目的地) 协议和端口
    • gkegw1-l7-[network]-[region/global]
    • gkemcg1-l7-[network]-[region/global]

    允许网络端点组 (NEG)健康检查

    创建第一个 Gateway 资源时,Gateway 控制器会创建此规则。如果创建更多 Gateway 资源,Gateway 控制器可以更新此规则。

    节点标记 TCP:所有容器目标端口(适用于 NEG)

    GKE Ingress 防火墙规则

    创建 Ingress 资源时,GKE 会创建以下入站流量防火墙规则:

    名称 用途 源代码 目标(用于定义目的地) 协议和端口
    k8s-fw-l7-[random-hash]

    允许 NodePort Service 或网络端点组 (NEG)健康检查

    创建第一个 Ingress 资源时,Ingress 控制器会创建此规则。如果创建了更多 Ingress 资源,则 Ingress 控制器可以更新此规则。

    对于 GKE v1.17.13-gke.2600 或更高版本:
    • 130.211.0.0/22
    • 35.191.0.0/16
    • 用户定义的仅代理子网范围(适用于内部应用负载均衡器)
    节点标记 TCP:30000-32767、TCP:80(适用于内部应用负载均衡器)、TCP:所有容器目标端口(适用于 NEG)

    共享 VPC

    位于共享 VPC 中的集群使用共享 VPC 网络时,Ingress 控制器无法使用服务项目中的 GKE 服务账号在宿主项目中创建和更新入站允许防火墙规则。您可以在服务项目中为 GKE 服务账号授予创建和管理防火墙资源的权限。如需了解详情,请参阅共享 VPC

    扩展子网所需的防火墙规则

    如果您扩展集群子网的主要 IPv4 范围,GKE 不会自动更新 gke-[cluster-name]-[cluster-hash]-vms 防火墙规则的来源范围。由于集群中的节点可以接收来自子网主要 IPv4 范围扩展部分的 IPv4 地址,因此您必须手动创建防火墙规则,以允许在集群的节点之间进行通信。

    您创建的入站防火墙规则必须允许来自扩展子网主要 IPv4 来源范围的 TCP 和 ICMP 数据包,并且该规则必须至少应用于集群中的所有节点。

    如需创建仅应用于集群节点的入站防火墙规则,请将防火墙规则的目标设置为集群自动创建的 gke-[cluster-name]-[cluster-hash]-vms 防火墙规则所用的目标标记。

    规则评估顺序

    如果除了 VPC 防火墙规则之外,您还使用防火墙政策,则默认情况下,Google Cloud 会先于网络防火墙政策(全球和区域级)评估防火墙规则。如果您更改规则评估顺序,则流量可能无法到达您的 GKE 集群。如需了解详情,请参阅政策和规则评估顺序

    防火墙规则日志记录

    防火墙规则日志记录默认处于停用状态。如需为防火墙规则启用日志记录,请使用 --enable-logging 命令

    后续步骤