GCP VM访问VPC原生Cloud DNS GKE集群ClusterIP服务问题咨询
问题根因排查方向
你当前的DNS解析正常、Pod IP可通,说明基础VPC连通性没问题,问题出在ClusterIP网段的VPC路由宣告配置缺失,相关功能的认知偏差和排查点如下:
- 文档中提到的跨VM/集群访问ClusterIP能力,仅开启VPC范围DNS是不够的:DNS模块只负责把Service域名解析到ClusterIP地址,路由层面需要额外开启GKE的ClusterIP路由宣告功能才能实现连通
- 常规VPC原生GKE集群默认只会把Pod网段同步到VPC路由表,ClusterIP网段默认不会对外宣告,所以会出现解析正常但无法连通的情况
需要检查的缺失配置项
- 确认集群是否开启ClusterIP网段宣告beta功能
该功能需要在创建/更新集群时显式指定beta参数--enable-ip-allocation-for-cluster-ip,开启后GKE会自动把ClusterIP的整个网段同步到VPC路由表,下一跳指向集群节点,VPC内的VM才能正常路由ClusterIP流量。
可以用以下gcloud命令检查当前集群配置:gcloud beta container clusters describe 你的集群名 --zone 集群所在区 | grep enableIpAllocationForClusterIp - 检查VPC防火墙规则
确认VPC全局防火墙、GKE节点入站防火墙都放行了VM所在网段到ClusterIP网段对应服务端口(你当前配置的80端口)的TCP流量 - 确认GKE版本支持
该beta功能最低要求GKE 1.21及以上版本,版本低于要求的话需要先升级集群 - 检查ClusterIP网段是否和VPC现有网段冲突
如果ClusterIP自定义网段和VPC内其他子网网段重叠,会导致路由冲突无法正常转发
内容的提问来源于stack exchange,提问作者stvnwrgs
相关产品推荐
相关产品推荐

