kubernetes 中相同 app:port 的多项服务

Multiple services for same app:port in kubernetes

我正在 Kubernetes 上试验服务发现方案。我有 20 多个 GRPC 服务,可以将它们分组并部署为 Kubernetes 上的应用程序。每个应用程序都使用一个通用的 GRPC 服务器来提供其中的几个服务。有一个发布这个 GRPC 端口的服务,我在这些服务上有标签,可以识别 运行 那里有哪些 GRPC 服务器。

例如,我有 APP1 应用程序服务于 GRPC 服务 a、b、c。 APP1前面有一个服务连接到8000端口,标签为a,b,c。因此,当集群中的组件需要连接到服务时,比如 "b",它会查找具有标签 "b" 的服务,并连接到其中一个服务的端口 8000。这样,我就可以用不同的方式对 GRPC 服务进行分组,部署它们,它们都能找到彼此。

我开始考虑另一种方法。我不想为每个应用程序提供一项带有标签的服务,而是希望为具有不同名称的同一个 app:port 提供多项服务(每个 GRPC 服务一项)。因此,在这个新方案中,APP1 将具有三个服务 a、b 和 c,它们都连接到同一个 app:port。客户端只需查找名称 "b" 即可找到 GRPC 服务器 "b".

问题是:您是否看到将多个名称不同的服务连接到同一应用程序的同一端口并公开同一端口的任何潜在问题?也就是说,地址 a:8000b:8000c:8000 都指向 APP1:8000.

老实说,只要您的应用程序在内部识别客户端正在尝试与 a:8000b:8000c:8000 通信,我就看不到任何问题。本质上,在这种情况下,您会发现容器中只有一个端口 8000。这类似于每个服务的不同 HTTP 端点,例如 https://myendpoint:8000/ahttps://myendpoint:8000/bhttps://myendpoint/c.

请注意,8000 将是容器中的端口,但 Kubernetes 将使用节点上的随机端口将流量转发到容器中的 8000