我有 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 也不成功。
似乎某处存在端口阻塞,但我不确定在哪里或如何允许两个网络上的所有内容(并且具有最高优先级)
这很正常。网络对等互连不具有传递性。但你的解释中有一个缺失的部分。
因此你有这个网络流:
堡垒 -> VPC1 -> 对等 -> VPC2 -> 对等 -> VPCG -> GKE 控制平面
因为对等互连不具有传递性,所以会失败。
现在,你有什么选择?