stream量不通过VPN从远程networking路由回GKE集群

( 通过VPN连接GKE Pod的跟进? )

我尝试使用到思科ASA 5510的GCE VPN将GKE群集连接到远程networking。从GKE pod 10.248.0.26 – >远程节点10.99.193.115的Ping到达10.99.193.115,并且ASA表示回显应答正在进行通过隧道回到GKE。 但是,10.248.0.26上的tcpdump显示没有应答。

由Google云端控制台报告的防火墙和路由:

Name Source tag / IP range Allowed protocols / ports Target tags default-allow-icmp 0.0.0.0/0 icmp Apply to all targets default-allow-internal 10.240.0.0/16 tcp:1-65535; udp:1-65535; icmp Apply to all targets default-allow-ssh 0.0.0.0/0 tcp:22 Apply to all targets gke-zecluster-d6cc7a55-all 10.248.0.0/14 tcp; udp; icmp; Apply to all targets gke-zecluster-d6cc7a55-ssh <public_ip>/32 tcp:22 gke-zecluster-d6cc7a55-node gke-zecluster-d6cc7a55-vms 10.240.0.0/16 tcp:1-65535; udp:1-65535; icmp gke-zecluster-d6cc7a55-node k8s-fw-a1a92183fb18e11e5be3442010af0001 0.0.0.0/0 tcp:80,443 gke-zecluster-d6cc7a55-node k8s-fw-a1aa3fe95b18e11e5be3442010af0001 0.0.0.0/0 tcp:2003 gke-zecluster-d6cc7a55-node Name Destination IP ranges Priority Instance tags Next hop default-route-3eed071cad0670e8 0.0.0.0/0 1000 None Default internet gateway default-route-7a9ddc4457c714a0 10.240.0.0/16 1000 None Virtual network gke-zecluster-d6cc7a55-7b61213c-b187-11e5-be34-42010af00015 10.248.0.0/24 1000 None gke-zecluster-d6cc7a55-node-j4jx (Zone ze-zone-1) gke-zecluster-d6cc7a55-7ec5f7a9-b187-11e5-be34-42010af00015 10.248.1.0/24 1000 None gke-zecluster-d6cc7a55-node-rluf (Zone ze-zone-1) vpn-1-tunnel-1-route-1 10.99.0.0/16 1000 None 

是否有一些logging我可以打开看看发生了什么? 据我所知,VPN说这个stream量没有任何关系,只是:

 15:24:51.058 sending DPD request 15:24:51.058 generating INFORMATIONAL_V1 request 3069408857 [ HASH N(DPD) ] 15:24:51.058 sending packet: from <gce-vpn-ip>[500] to <asa-ip>[500] (92 bytes) 15:24:51.092 received packet: from <asa-ip>[500] to <gce-vpn-ip>[500] (92 bytes) 15:24:51.092 parsed INFORMATIONAL_V1 request 146600869 [ HASH N(DPD_ACK) ] 

如果我修改了VPN隧道(GCE VPN,ASA),使GCE端stream量的默认networking10.240.0.0/16在两个方向上正确传递。

我认为这是一个路由问题,但是什么? 路由10.248.0.0/24不应该把stream量发送回GKE节点吗? 或者我必须以某种方式将GKEnetworking声明为networking?

如果IP地址10.248.0.26属于GKE节点,那么为了在GKE节点和远程节点之间进行ping ,需要在10.248.0.26/24networking上添加防火墙规则,以允许到GKE节点或所有目标从您的远程来源的networking。

最后,我不得不select一个不同的选项。 通过设置spec.hostNetwork选项,将pod推入到VPN工作正常的节点地址空间10.240.0.0/16中。

据我所知,当你创build一个GKE集群时,为pod地址空间设置了一些“神奇”的networking连接,在VPN方面似乎没有正确的路由。 Karman可能是正确的,但我无法find一个明确的虚拟networking来连接防火墙规则。 简单地将它们粘贴在默认networking上似乎没有帮助。

创build一个新的非传统networking并不能解决问题,因为GKE拒绝在现有虚拟networking中创build一个具有pod地址的集群,而GCE SDN拒绝为GKE已经声明的地址空间创build虚拟子网。