这些是步骤:
- 在"项目 A"中,我有一个带有 postgresql 私有 IP 的"网络 A"。
- 可以通过私有 IP 从存在于同一"网络 A"中的 VM 访问 postgresql。
- 在同一"项目 A"中创建新的"网络 B"> 在"网络
- A"和"网络 B"之间创建"VPC 网络对等体">
- 完全开放的防火墙
- 无法从"网络 B"访问 postgresql,但可以 ping "网络 A"上存在的虚拟机
为什么我无法访问 postgresql?是因为 SQL 私有 IP 处于测试模式,还是我在这里缺少 smth?
云 SQL专用 IP 访问是通过对等互连设置的,因此网络 A 与包含云 SQL 实例的网络 Z 对等互连。当您将 A 与 B 对等时,B 无法访问网络 Z。
是的,代理是前面的响应中提到的方法,因为对等互连不是可传递的。
从对等网络"B"VM 访问网络"A"中的 SQL 代理非常简单。
至于从网络"B"中的 Kubernetes 集群访问,有一个可能的陷阱。默认情况下,Kubernetes 不会将流量发往 10.0.0.0/8,并会尝试将其保留在本地。因此,您需要更改主机实例上的iptables
规则才能访问外部。
一个永久的解决方案是设置DaemonSet
,但你可以先通过在主机上手动更改来测试这个理论。例如:
iptables -A POSTROUTING -d 10.11.0.0/24
-m addrtype ! --dst-type LOCAL -j MASQUERADE -t nat
这是一个优秀的,简单的指南 https://blog.mrtrustor.net/post/iptables-kubernetes/的链接。