同一应用程序的多个服务:kubernetes中的端口
我正在Kubernetes上试验服务发现方案。我有20多个GRPC服务,可以在Kubernetes上作为应用程序进行分组和部署。每个应用程序都通过一个通用GRPC服务器为其中几个服务提供服务。有一个服务来发布这个GRPC端口,我在这些服务上有标签,标识哪些GRPC服务器正在那里运行 例如,我有APP1应用程序服务于GRPC服务a、b、c。APP1前面有一个服务连接到端口8000,带有标签a、b、c。因此,当集群中的一个组件需要连接到服务(例如“b”)时,它会查找标签为“b”的服务,并连接到其中一个的端口8000。通过这种方式,我可以以不同的方式对GRPC服务进行分组、部署,它们都可以相互找到 我开始考虑另一种方法。我不希望每个应用都有一个带有标签的服务,而是希望同一同一应用程序的多个服务:kubernetes中的端口,kubernetes,kubernetes-service,Kubernetes,Kubernetes Service,我正在Kubernetes上试验服务发现方案。我有20多个GRPC服务,可以在Kubernetes上作为应用程序进行分组和部署。每个应用程序都通过一个通用GRPC服务器为其中几个服务提供服务。有一个服务来发布这个GRPC端口,我在这些服务上有标签,标识哪些GRPC服务器正在那里运行 例如,我有APP1应用程序服务于GRPC服务a、b、c。APP1前面有一个服务连接到端口8000,带有标签a、b、c。因此,当集群中的一个组件需要连接到服务(例如“b”)时,它会查找标签为“b”的服务,并连接到其中一
app:port
具有不同名称的多个服务(每个GRPC服务一个)。因此,在这个新方案中,APP1将有三个服务,a、b和c,都连接到同一个应用程序:端口。客户端只需查找名称“b”即可找到GRPC服务器“b”
问题是:如果将多个名称不同的服务连接到同一应用程序的同一端口,并公开同一端口,您是否看到任何潜在问题?也就是说,地址
a:8000
,b:8000
,c:8000
都指向APP1:8000
,a:8000
,b:8000
,或者c:8000
,老实说,只要您的应用程序在内部识别出客户机正在试图与a:8000
,我就看不到任何问题。基本上,您会发现容器中只有一个端口8000
。这类似于每个服务的不同HTTP端点,比如https://myendpoint:8000/a
,https://myendpoint:8000/b
和https://myendpoint/c
请注意,
8000
将是容器中的端口,但Kubernetes将使用节点上的随机端口将流量转发到容器中的8000
。谢谢。一旦客户端获得端点,它就会创建一个GRPC客户端,然后服务器就知道它是a、b还是c。关键是能够找到独立于部署结构的服务。这与同一服务的多个http端点不同,因为在该示例中,它们都具有相同的主机名。对于多个服务,DNS将有多个不同的名称解析为同一地址。