无论如何,我可以使用默认网络上的 VPC连接器将Cloud Functions连接到具有多个网络接口(其中 nic0是其他网络和 nic1是默认网络?
所以我有一个具有多个网络接口的GCE实例。
nic0 is someother network
nic1 is default network
我在默认网络上建立了无服务器VPC连接器。并将该连接器与Google Cloud功能一起用于连接到GCE实例。
问题在于,当交换网络接口时,即 nic0是默认网络,而 nic1是其他网络,则VPC连接器成功连接并且云功能可以到达GCE,但是当 nic0是其他网络而 nic1是默认网络时,云功能将无法达到GCE。
我尝试了以下操作:
注意:由于我已成功将Cloud功能仅通过默认网络成功连接到GCE实例,因此我具有正确的IAM权限设置。
答案 0 :(得分:1)
无需进一步配置,辅助网络接口only provide access to the immediate subnet they are attached to包括无服务器的VPC连接器,因为它们的本质就是与您的实例所连接的子网不同的子网。
要解决此问题,您需要在操作系统中在辅助接口所在的实例上创建一条静态路由。显然这取决于您的操作系统,但是在Debian-9上,您可以使用以下命令进行设置:
sudo ip route add [MY_CONNECTOR_SUBNET] via [ETH1_DEFAULT_ROUTER] dev eth1
其中ETH1_DEFAULT_ROUTER是您的ETH1子网的.1地址,而MY_CONNECTOR_SUBNET是配置了连接器使用的CIDR格式/ 28子网(例如,类似10.50.1.0/28的东西,但这取决于您的设置方式)您的连接器)。
当然,这并不会在启动时持久化,因为这也是特定于操作系统的配置,但是应该为您提供一个解决方案。
此外,“默认”网络实际上没有什么特别的-它只是一个自动创建的自动模式网络,并且没有任何理由在连接器连接时不应该起作用到nic0“其他”网络。此处发生的唯一“特殊”事件是nic0获取了所有来自VM的流量的默认路由,因此不需要添加静态路由即可访问同一网络上的无服务器VPC连接器。