跨VPC子网访问GKE私有集群失败求助
跨区域子网VM访问私有GKE集群超时问题排查与解决方案
1. 验证控制平面入站防火墙规则
自动创建的GKE控制平面入站规则(命名格式通常为gke-<集群名>-master)需确保覆盖跨区域子网的流量:
- 执行命令查看规则详情:
gcloud compute firewall-rules list --filter="name~gke-.*-master"
- 确认规则的
sourceRanges包含10.171.1.0/24,targetTags/targetServiceAccounts正确指向集群控制平面,allowed字段为tcp:443。 - 检查是否有优先级更高的拒绝规则拦截了流量。
2. 检查VPC跨区域路由有效性
确认VPC自动路由未被禁用,且存在跨区域子网到控制平面网段的有效路由:
- 列出VPC内所有路由:
gcloud compute routes list --filter="network=<你的VPC名称>"
- 验证是否存在从
10.171.1.0/24到10.181.15.0/28的路由,且下一跳配置正确(默认自动路由会处理跨区域子网通信)。
3. 执行网络连通性测试
在us-east1的VM上直接测试控制平面的网络可达性:
- 测试443端口连通性:
telnet 10.181.15.2 443 # 或使用nc工具 nc -zv 10.181.15.2 443
- 使用Google Cloud内置诊断工具定位问题:
gcloud compute network-tests connectivity create --source-instance <us-east1实例名> --source-zone us-east1-b --destination-ip 10.181.15.2 --destination-port 443
该工具会输出流量路径的详细分析,明确是防火墙阻断还是路由缺失。
4. 重新确认控制平面授权网络配置
检查授权网络是否正确生效,若配置缺失则更新集群:
- 查看当前授权网络:
gcloud container clusters describe <集群名> --zone us-east4-b | grep -A 5 authorizedNetworksConfig
- 若
10.171.1.0/24未在列表中,执行更新命令(需包含原同区域子网避免覆盖):
gcloud container clusters update <集群名> --zone us-east4-b --enable-master-authorized-networks --master-authorized-networks 10.181.11.0/24,10.171.1.0/24
5. 检查控制平面出站规则
控制平面需能回复跨区域VM的请求,确认us-east4子网的出站规则允许到10.171.1.0/24的流量:
- 查看GKE自动创建的控制平面出站规则(命名格式通常为
gke-<集群名>-master-outbound),确保其允许所有出站流量或包含目标子网的范围。
内容的提问来源于stack exchange,提问作者LHWizard
相关产品推荐
相关产品推荐

