本页面介绍 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 和指标服务器。 | 控制平面 IP 地址范围 (/28) | 节点标记 | TCP:443(指标服务器)和 TCP:10250 (kubelet) | 1000 |
gke-[cluster-name]-[cluster-hash]-vms
|
用于 Kubernetes 网络模型所需的集群内通信。 允许在节点上运行的软件将具有与来源匹配的节点 IP 地址的数据包发送到集群中的目标 Pod IP 地址和节点 IP 地址。例如,此规则允许的流量包括:
|
节点 IP 地址范围或此节点 IP 地址范围的超集:
|
节点标记 | 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 之间的流量。 |
|
节点标记 | 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 时,允许外部直通网络负载均衡器服务的健康检查。 |
|
LoadBalancer 虚拟 IP 地址 | TCP:10256 |
k8s-[loadbalancer-hash]-http-hc |
当 externalTrafficPolicy 设置为 Local 时,允许外部直通网络负载均衡器服务的健康检查。 |
|
节点标记 | 由 spec.healthCheckNodePort 定义的 TCP 端口。如果省略 spec.healthCheckNodePort ,则默认为 TCP 端口号 10256 。如需了解详情,请参阅健康检查端口。 |
k8s-[cluster-id]-node-hc |
当 externalTrafficPolicy 设置为 Cluster 时,允许内部直通网络负载均衡器服务的健康检查。 |
|
节点标记 | TCP:10256 |
[loadbalancer-hash]-hc |
当 externalTrafficPolicy 设置为 Local 时,允许内部直通网络负载均衡器服务的健康检查。 |
|
节点标记 | 由 spec.healthCheckNodePort 定义的 TCP 端口。如果省略 spec.healthCheckNodePort ,则默认为 TCP 端口号 10256 。如需了解详情,请参阅健康检查端口。 |
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash] |
在启用以下其中一项时,允许入站流量到达 Service: |
来源来自 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 进行健康检查: |
|
LoadBalancer 虚拟 IP 地址 | 由 spec.healthCheckNodePort 定义的 TCP 端口。如果省略 spec.healthCheckNodePort ,则默认为 TCP 端口号 10256 。如需了解详情,请参阅健康检查端口。 |
k8s2-[cluster-id]-l4-shared-hc-fw |
当 externalTrafficPolicy 设置为 Cluster 且启用了以下任一项时,允许对 Service 进行健康检查: |
|
节点标记 | TCP:10256 |
gke-[cluster-name]-[cluster-hash]-mcsd |
允许控制平面访问多集群服务的集群节点上的 Kubelet 和指标服务器。此规则的优先级为 900。 | 健康检查 IP 地址 | 节点标记 | TCP、UDP、SCTP、ICMP、ESP、AH |
GKE 网关防火墙规则
创建 Gateway 和 HTTPRoute 资源时,GKE 会创建以下网关防火墙规则:
名称 | 用途 | 来源 | 目标(用于定义目的地) | 协议和端口 |
---|---|---|---|---|
|
允许网络端点组 (NEG) 的健康检查。 创建第一个 Gateway 资源时,Gateway 控制器会创建此规则。如果创建更多 Gateway 资源,Gateway 控制器可以更新此规则。 |
|
节点标记 | TCP:所有容器目标端口(适用于 NEG) |
GKE Ingress 防火墙规则
创建 Ingress 资源时,GKE 会创建以下入站流量防火墙规则:
名称 | 用途 | 来源 | 目标(用于定义目的地) | 协议和端口 |
---|---|---|---|---|
k8s-fw-l7-[random-hash] |
允许 创建第一个 Ingress 资源时,Ingress 控制器会创建此规则。如果创建了更多 Ingress 资源,则 Ingress 控制器可以更新此规则。 |
|
节点标记 | 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
命令。
后续步骤
- 阅读 GKE 中的网络概览。
- 了解如何为应用配置网络政策。
- 了解 Google Cloud 中的其他预先填充的防火墙规则。
- 详细了解如何在使用共享 VPC 的项目中创建防火墙规则。