问题:我如何提供从运行在GCE网络中的(非K8s)服务到在Kubernetes中运行的其他服务的可靠访问?
后台:我们正在Google平台中运行托管的K8s设置。大多数服务都是12要素应用程序和run只是K8s中的精细。一些备份存储(数据库)是在K8s之外运行的。通过使用带有手动定义的端点到固定内部IP的无头服务来访问它们是很容易的。这些服务通常不需要“回话”到K8s中的服务。
但是,一些在内部GCE网络中运行的服务(但在K8s之外)需要在K8s中运行访问服务。我们可以使用K8s公开spec.type: NodePort服务,并在任何K8s节点IP上与该端口对话。但是,我们如何自动找到正确的NodePort和有效的Worker Node?或者也许有更好的方法来解决这个问题。
这种设置可能不是K8s部署的典型用例,但我们希望这样做,直到PetSets和K8s中的持久性存储已经足够成熟为止。
在我们讨论内部服务时,我希望在本例中避免使用外部负载均衡器。
发布于 2016-08-31 17:33:21
您可以通过创建一个“堡垒路由”或在您要连接的机器上运行kube(请参阅this answer),使集群服务IP在集群之外(但在专用网络内)具有意义。
我认为您还可以将resolv.conf指向集群的DNS服务,以便能够解析服务DNS名称。但是,如果有多个集群,这可能会变得很棘手。
https://stackoverflow.com/questions/39243877
复制相似问题