Kubernetes集群中的内部和外部集群通信

问题描述 投票:1回答:1

我在Google Kubernetes Engine(GKE)上构建了一个Kubernetes集群。它基本上是一个Service与相关的ReplicaSet与许多豆荚。

这些豆荚需要相互交谈以保持共识。为此,ClusterIP似乎很合适,允许pod的群集内通信。

但是,现在我想将此服务公开给全世界。我的想法是从ClusterIP切换到NodePort并将它与Ingress结合,这似乎是best practice

我的问题是,当我将Service切换到NodePort时,我失去了群集的内部通信,即pod无法相互通信。据我所知,NodePort is a superset of ClusterIP,所以它应该保持内部沟通。

我究竟做错了什么?


使用额外信息进行编辑

我指的是this example,一个Neo4j图数据库的例子。

该示例部署了一个StatefulSet,其中pod需要进行通信,以便在群集之间保持一致。

使用提供的设置,pod可以相互通信。如果我将Service更改为NodePort,并修复使用的nodePorts(而不是像往常一样随机选择它们),则pods无法再进行通信。

这是预期的行为,还是我错过了什么?

neo4j kubernetes google-kubernetes-engine
1个回答
1
投票

确实NodePortClusterIP的超集,但是要清楚,你不需要服务是NodePort类型,因为它被IngressController暴露。 IC可以直接访问端点(pod),因此除了ClusterIP之外不需要使用任何东西。

另一件事是ClusterIP服务对pod-to-pod连接没有影响,而且使用服务允许共识聊天似乎有点奇怪(除非你有每个pod的svc)。对于这种操作,您可能希望仔细观察StatefulSet概念

© www.soinside.com 2019 - 2024. All rights reserved.