安装Anthos Service Mesh后,私有GKE Autopilot集群Init容器无法连接GCP SQL
问题描述
- 在私有GKE Autopilot集群中安装Anthos Service Mesh(ASM)后,Init容器无法连接GCP SQL RDS实例;安装ASM前,该Init容器可正常连接目标SQL实例。
- Init容器中使用的连通性检查命令:
until nc -w 5 <PRIVATE_IP> 3306; do echo "Waiting for the <PRIVATE_IP>..."; sleep 5; done
排查与解决建议
- 禁止Init容器的Sidecar注入:ASM默认会给命名空间内所有容器注入Istio Sidecar,但Init容器通常不需要代理。在Pod的annotations中添加
sidecar.istio.io/inject: "false",仅对Init容器禁用注入,测试是否恢复连通。 - 检查Istio网络策略:ASM安装后会自动部署Istio网络策略,可能限制了Init容器的出站流量。查看目标命名空间下的
IstioNetworkPolicy或Kubernetes原生NetworkPolicy,确保规则允许Init容器访问SQL实例的私有IP和3306端口。 - 验证SQL实例的授权配置:确认GCP SQL实例的私有IP所属VPC与GKE集群一致,且SQL的授权网络包含GKE集群的Pod CIDR或节点子网。ASM可能改变了Pod的流量出口路径,需要重新确认访问规则是否覆盖新的流量来源。
- 检查Init容器的网络状态:进入Init容器执行
ip a查看网卡信息,如果发现istio0虚拟网卡,说明Sidecar被意外注入,此时必须通过annotation禁用注入。 - 调整ASM出站流量策略:查看ASM的
MeshConfig,如果outboundTrafficPolicy.mode设置为REGISTRY_ONLY,则仅允许访问Istio注册表中的服务。可以将该模式改为ALLOW_ANY,或者将SQL实例的IP和端口添加到Istio的ServiceEntry中,让ASM允许该出站流量。
内容的提问来源于stack exchange,提问作者Pranav Makwana
相关产品推荐
相关产品推荐

