kubernetes - 无法从一个集群访问 Kubernetes 服务到另一个集群(通过 VPC peerng)
问题描述
我想知道是否有人可以帮助解决我的问题,这是设置:
- 我们在 GKE 中有 2 个独立的 kubernetes 集群,在 v1.17 上运行,它们各自位于一个单独的项目中
- 我们已经在两个项目之间建立了 VPC 对等互连
- 在集群 1 上,我们有一个由内部 HTTPS 负载均衡器公开的“service1” ,我们不希望它公开
- 在集群 2 上,我们打算能够通过内部负载均衡器访问“service1”,它应该通过两个项目之间的 VPC 对等连接来执行此操作
这是问题所在:当我通过集群 2 上的 GKE 节点上的 SSH 连接时,我可以成功运行 curl 请求以访问在集群 1 上运行的https://service1.domain.com,并获得预期的响应,因此流量肯定是从集群 2 > 集群 1 路由。但是,当我从 POD 运行相同的 curl 命令并在 GKE 节点上运行时,相同的 curl 请求会超时。
我已经尽可能多地进行了故障排除,包括 telnet、traceroute 等,但我真的很困惑为什么会这样。如果有人能阐明这里的区别,那就太好了。
我确实想知道 Pod 网络是否以某种方式通过集群公共 IP 而不是通过 VPC 对等连接转发流量。
解决方案
正如答案之一中提到的,IP 别名(VPC-native)应该开箱即用。如果使用基于路由的 GKE 集群而不是 VPC-native,则需要使用自定义路由。
根据这个文件
默认情况下,与 IP 别名一起使用时,支持与 GKE 的 VPC 网络对等互连。如果您不使用 IP 别名,您可以导出自定义路由,以便可以从对等网络访问 GKE 容器。
如果您有没有 VPC 本机寻址的 GKE 集群,您可能有多个静态路由来将流量引导到托管您的容器的 VM 实例。您可以导出这些静态路由,以便可以从对等网络访问容器。
推荐阅读
- angular - 如何创建一个比较选择器并正确调度它?
- javascript - 为什么我的图像没有出现在我的 ShadowRoot 弹出窗口中?
- python - 如何在 pytorch nn.module 中设置图层的值?
- amazon-web-services - S3 存储桶正在重定向到未知网页
- python - 如何实现多元回归?
- styles - 将 Form.Field 中的 label 和 textarea 设置为内联
- pdf - 使用 PyMuPDF 将 PDF 页面 Pixmap 保存为 PNG 时出现颜色问题
- php - 保持选中表中的选定选项
- ajax - Laravel 将查询与 if 语句结合起来
- kubernetes - 如何从多个 ConfigMap 资源构建 DSN env?