Google compute engine 如何从内部非K8s网络访问K8s中的服务?

Google compute engine 如何从内部非K8s网络访问K8s中的服务?,google-compute-engine,kubernetes,google-kubernetes-engine,Google Compute Engine,Kubernetes,Google Kubernetes Engine,问题:如何提供从GCE网络中运行的(非K8s)服务到Kubernetes内部运行的其他服务的可靠访问 后台:我们正在谷歌云平台中运行一个托管的K8s设置。大多数服务都是12factor应用程序和run在K8s中只fine。一些备份存储(数据库)在K8s之外运行。通过使用带有手动定义的固定内部IP端点的无头服务,访问它们很容易。这些服务通常不需要与K8s中的服务进行“对话” 但是一些运行在内部GCE网络中的服务(但是在K8s之外的服务)需要访问运行在K8s内部的服务。我们可以使用spec.type

问题:如何提供从GCE网络中运行的(非K8s)服务到Kubernetes内部运行的其他服务的可靠访问

后台:我们正在谷歌云平台中运行一个托管的K8s设置。大多数服务都是12factor应用程序run在K8s中只fine。一些备份存储(数据库)在K8s之外运行。通过使用带有手动定义的固定内部IP端点的无头服务,访问它们很容易。这些服务通常不需要与K8s中的服务进行“对话”

但是一些运行在内部GCE网络中的服务(但是在K8s之外的服务)需要访问运行在K8s内部的服务。我们可以使用
spec.type:NodePort
公开K8s服务,并与任何K8s节点IP上的此端口进行通信。但是,我们如何自动找到正确的节点端口和有效的工作节点IP?或者也许有更好的方法来解决这个问题

这种设置可能不是K8s部署的典型用例,但我们希望这样做,直到K8s中的Petset和持久存储足够成熟


当我们谈论内部服务时,我希望在这种情况下避免使用外部负载平衡器。

您可以通过创建“堡垒路由”或在您连接的机器上运行kube代理,使群集服务IP在群集外部(但在专用网络内部)具有意义(请参阅)

我认为您还可以将resolv.conf指向集群的DNS服务,以便能够解析服务DNS名称。但是,如果您有多个集群,这可能会变得很棘手