vpc 对等互连无法在 gke 和堡垒主机之间进行通信

问题描述 投票:0回答:1

我有 2 个 vpc 网络,一个包含一个 gke 集群(在子网上具有私有访问权限的私有集群),另一个包含虚拟机的 vpc,充当连接到 gke 集群的堡垒主机。

  • 我已在 2 个 vpc 之间设置 vpc 对等互连,并且它显示为活动状态

  • 我尝试创建防火墙规则以允许两个 vpc 上的所有内容,实际上允许所有流量入口和出口

  • 我正在为堡垒主机使用 IAP 隧道,因此在这里为 35.235.240.0/20 和 tcp 22 设置了所需的防火墙

  • 已尝试在集群上添加和删除授权网络(即将堡垒主机的IP添加到授权列表中)

通过 ssh 连接到虚拟机没有问题。只是当我尝试 ping 集群或 kubectl 的外部端点以从堡垒主机获取节点时,我收到端口 443 超时错误:

kubectl 获取节点 -v=10

I1201 09:42:56.605425   68742 loader.go:395] Config loaded from file:  /home/name/.kube/config
I1201 09:42:56.606466   68742 round_trippers.go:466] curl -v -XGET  -H "Accept: application/json;g=apidiscovery.k8s.io;v=v2beta1;as=APIGroupDiscoveryList,application/json" -H "User-Agent: kubectl/v1.28.2 (linux/amd64) kubernetes/89a4ea3" 'https://ip/api?timeout=32s'
I1201 09:43:26.614171   68742 round_trippers.go:508] HTTP Trace: Dial to tcp:ip:443 failed: dial tcp ip:443: i/o timeout
I1201 09:43:26.614238   68742 round_trippers.go:553] GET https://ip/api?timeout=32s  in 30007 milliseconds

Ping 也不成功。

似乎某处存在端口阻塞,但我不确定在哪里或如何允许两个网络上的所有内容(并且具有最高优先级)

google-cloud-platform networking firewall bastion-host vpc-peering
1个回答
0
投票

这很正常。网络对等互连不具有传递性。但你的解释中有一个缺失的部分。

  • 您拥有带有堡垒的 VPC1
  • 您拥有带有 GKE 控制平面的 VPC2
    • 这是错误的!!您有一个 VPCG,即 Google Cloud 世界的 VPC,托管您的 GKE 控制平面,由 Google 管理。
    • 您在 VPCG 和 VPC2 之间建立对等互连。

因此你有这个网络流:

堡垒 -> VPC1 -> 对等 -> VPC2 -> 对等 -> VPCG -> GKE 控制平面

因为对等互连不具有传递性,所以会失败。


现在,你有什么选择?

  • 在VPC2中创建堡垒
  • 旧方式:在 VPC1 和 VPC2 之间创建 VPN 来解决对等传递问题
  • 新方式:使用 PSC(专用服务连接)抽象网络连接,让 Google 为您管理这些内容。 我从未测试过这个新选项。
© www.soinside.com 2019 - 2024. All rights reserved.