2017-09-26 235 views
1

我有一个带有两个容器的容器。应用程序和数据库。我有两个副本。公开两个端口,一个为ClusterIP,另一个为NodePort

我要揭露的应用端口到集群外部访问,我不希望暴露数据库端口。

但我想访问数据库端口使用DNS来平衡流量。

我可以创建两个服务中的一个为NodePort和揭露applicatin端口和其他服务为ClusterIP揭露数据库端口。

我还可以连接从应用服务器localhost作为业务之前曾去过的平衡。并且仅将应用程序服务器作为nodeport公开。

的问题是:我可以揭发数据库端口群集IP和应用端口nodeport只有一个服务?

谢谢。

回答

0

不可以。

更何况事实上,它是一个非常罕见的情况下才有意义,以保持数据库在同一吊舱中复制的设置,因为通常需要将它们分成不同的部署/服务。

+0

如果数据库仅适用于在pod中运行的应用程序,为什么它很少见?我会说这是微服务方法。简单的隔离应用 – Jxadro

+0

对于初学者,您复制微服务。除非你的数据库执行了一些严肃的复制魔法(或者你的服务不共享状态),否则只要你开始运行多个实例,就会遇到麻烦。另外,最好能够分别调整状态存储(db)和服务。如果你的svc做了一些合理的事情,你可能需要添加* do * stuff的豆荚,而不是那些存储状态的豆荚。另一件事是数据持久性 - 你如何保留被破坏的pod上的数据(除非你不需要持久性)。还有更多,但字符限制踢在... :) –

1

答案是:不,你不能。

但你还是应该知道,NodePort类型的Kubernetes服务也将分配一个群集IP与端口将路由。因此,如果您想发布两个端口,单个服务就足以通过名称在内部与外部通过节点端口连接。

+0

是的,问题是这两个端口将暴露为NodePort。我只需要一个作为NodePort,另一个只需要内部。我还认为,由于Nodeport通过ClusterIP,我可以访问ddbb端口,但是如果我没有在服务描述中指定它,它既不会作为ClusterIP也不会公开到NodePort。 – Jxadro

+0

是的,这就是为什么实际答案是“否”。 –

相关问题