Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同一应用程序的多个服务:kubernetes中的端口_Kubernetes_Kubernetes Service - Fatal编程技术网

同一应用程序的多个服务:kubernetes中的端口

同一应用程序的多个服务: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”的服务,并连接到其中一

我正在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,都连接到同一个应用程序:端口。客户端只需查找名称“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将有多个不同的名称解析为同一地址。