【问题标题】:GKE Pod Connect to external VM in same subnetGKE Pod 连接到同一子网中的外部虚拟机
【发布时间】:2019-01-03 15:28:42
【问题描述】:

我有一个 pod 需要连接到位于 GCE Vm 上的数据库,该数据库与 GKE 节点具有相同的子网。我目前有一个 pod 成功连接到的 k8 服务和 k8 端点,但 10.128.0.2 无法路由。我确定这与 GCP 防火墙规则/路由有关,但我运气不佳。

子网 -> 10.128.0.0/9

cbr0 -> 10.8.15.0/20

eth0 -> 10.128.0.1

k8 服务 -> 10.11.224/14

主版本:1.9.7-gke.3

kind: Endpoints
apiVersion: v1
metadata:
  name: externalDB
  namespace: default
 subsets:
  - addresses:
      - ip: 10.128.0.2 
    ports:
      - port: 7199 
        name: interface

"

【问题讨论】:

  • 嗨,你为什么使用端点?您是否尝试对外部数据库进行负载平衡?如果不是,那么直接从吊舱中走...不需要额外的跳跃。
  • 您说得对,端点不是必需的。它基本上被用来为外部服务提供一个 dns 入口。

标签: networking kubernetes google-cloud-platform google-compute-engine google-kubernetes-engine


【解决方案1】:

此时,服务和端点是不可路由的;然而,豆荚如this article 中所述。正如@cohenjo 提到的,您应该直接从 pod 连接。

编辑:我认为此问题是由于运行 1.9.x 的集群上的防火墙更改造成的,如 this article 中所述。您可以按照文章中提供的步骤来允许从 GKE 集群与网络上的所有 VM 实例进行通信,或者将在节点上分配的网络标签附加到您希望 Pod 与之通信的 VM 实例。

【讨论】:

  • 当我使用 pod (10.128.0.2) 中的地址时,我仍然遇到主机无法访问的相同问题
  • 我尝试通过使用相同版本创建集群来重现该问题。我在集群中创建了一个 pod。然后我进入我的一个 GCE VM 实例并从该实例 ping pod IP。我成功地 ping 了 Pod IP。您可以尝试从 VM 实例 ping Pod IP 并告诉我是否成功?
  • 是的,来自 10.128.0.2 (GCE VM) 的 ping 对 pod ( 10.8.25.3 ) 是成功的。但是从 pod 我无法连接到 10.128.0.2
  • 好的,谢谢你的更新。我已经编辑了我的答案。
  • 谢谢你,按照文章添加1.8.x中的防火墙规则。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 2019-08-25
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多