Question :如何提供从GCE网络中运行的(非K8s)服务到Kubernetes内运行的其他服务的可靠访问?
Background :我们正在 Google Cloud Platform 中运行 hosted K8s 设置 . 在K8s中,大多数服务都是 12factor apps 和 run 只是 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 回答
您可以通过创建"bastion route"或在要连接的计算机上运行kube-proxy,使群集服务IP在群集外部(但在专用网络内)有意义(请参阅this answer) .
我想你也可以将你的resolv.conf指向集群的DNS服务,以便能够解析服务DNS名称 . 如果你有多个集群,这可能会变得棘手 .