首页 文章

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

提问于
浏览
3

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

Background :我们正在 Google Cloud Platform 中运行 hosted K8s 设置 . 在K8s中,大多数服务都是 12factor appsrun 只是 fine . 一些 backing stores (数据库)运行 outside of K8s . 通过使用具有手动定义的 endpoints 的无头服务来固定内部IP,可以轻松访问它们 . 这些服务通常不需要对K8中的服务进行"talk back" .

但是 some services 在内部GCE网络中运行(但 outside of K8s )需要 access services running within K8s . 我们可以使用 spec.type: NodePort 公开K8s服务,并在任何K8s节点IP上与此端口通信 . 但是,我们如何才能自动找到正确的NodePort和有效的工作节点IP?或者甚至可能有更好的方法来解决这个问题 .

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

在我们讨论内部服务时,我想避免在这种情况下使用外部负载均衡器 .

1 回答

  • 2

    您可以通过创建"bastion route"或在要连接的计算机上运行kube-proxy,使群集服务IP在群集外部(但在专用网络内)有意义(请参阅this answer) .

    我想你也可以将你的resolv.conf指向集群的DNS服务,以便能够解析服务DNS名称 . 如果你有多个集群,这可能会变得棘手 .

相关问题