GKE私有集群通过PGA调用受限Google Places API授权失败
解决方案
一、强制GKE Pod调用Google Places API走IPv4
1. 给Pod配置DNS优先解析IPv4
直接在你的Deployment或Pod的YAML配置里添加dnsConfig,强制解析域名时只返回IPv4地址:
apiVersion: apps/v1 kind: Deployment metadata: name: your-app-deployment spec: template: spec: dnsConfig: options: - name: ipv4only value: "on" containers: - name: your-app-container image: your-app-image:latest
应用这个配置后,Pod访问Google Places API时会优先使用IPv4,走你配置的静态NAT出口。
2. 用NetworkPolicy限制IPv6出站流量(可选)
如果集群是双栈模式,你可以创建NetworkPolicy阻止Pod的IPv6出站请求,强制所有外部流量走IPv4:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: block-ipv6-outbound spec: podSelector: {} policyTypes: - Egress egress: - to: - ipBlock: cidr: 0.0.0.0/0 ports: - protocol: TCP port: 443 - protocol: TCP port: 80
3. 关闭集群的IPv6支持(如果业务不需要)
如果你的业务完全用不到IPv6,直接在GKE控制台修改集群配置,关闭IPv6功能,这样所有出站流量都会默认走IPv4。
二、获取Google Places API的IPv6地址段加入白名单
1. 通过DNS查询获取Google的IPv6范围
执行以下命令,直接拿到Google所有的IPv6地址段:
dig txt _netblocks.google.com +short | grep ipv6
把返回的CIDR段全部添加到API密钥的允许IP列表里。
2. 获取完整的Google云服务IP范围
如果上面的结果不全,可以查询Google云服务的完整IP段:
dig txt _cloud-netblocks.googleusercontent.com +short
从返回结果里提取IPv6的CIDR,添加到白名单即可。
注意:Google的IP范围会定期更新,最好写个脚本定期同步,避免IP变更导致访问失败。
内容的提问来源于stack exchange,提问作者Ralph
相关产品推荐
相关产品推荐

