Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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
Spring boot Istio服务发现_Spring Boot_Kubernetes_Microservices_Istio - Fatal编程技术网

Spring boot Istio服务发现

Spring boot Istio服务发现,spring-boot,kubernetes,microservices,istio,Spring Boot,Kubernetes,Microservices,Istio,我正在Docker桌面Kubernetes安装上尝试一个非常简单的Istio设置 我有2个Spring boot micro服务,并且在我的K8s“集群”中部署了这2个服务,没有任何复制。我的YAML文件中只有这两个服务的服务和部署 我已经安装了istio,我可以看到我的吊舱里有两个集装箱。一个是spring boot应用程序,另一个是istio sidecar 我正在从服务2打一个休息电话到服务1,就像这样,效果很好 restTemplate.exchange("http://service1

我正在Docker桌面Kubernetes安装上尝试一个非常简单的Istio设置

我有2个Spring boot micro服务,并且在我的K8s“集群”中部署了这2个服务,没有任何复制。我的YAML文件中只有这两个服务的服务和部署

我已经安装了istio,我可以看到我的吊舱里有两个集装箱。一个是spring boot应用程序,另一个是istio sidecar

我正在从服务2打一个休息电话到服务1,就像这样,效果很好

restTemplate.exchange("http://service1:8080/getSomeString", HttpMethod.GET, null, String.class, new Object()).getBody();
然而,现在如果我禁用sidecar注入并重新启用me服务,它仍然可以正常工作。基本上是Kubernetes在解析service1的位置并完成rest调用,而不是istio


如何使用istio进行服务发现?

在istio中,您可以使用虚拟服务进行服务发现。通过单个虚拟服务解决多个应用程序服务。例如,如果网格使用Kubernetes,则可以配置虚拟服务来处理特定命名空间中的所有服务。将单个虚拟服务映射到多个“真实”服务对于促进将单一应用程序转换为由不同的微服务构建的复合服务而无需服务的使用者适应转换特别有用。您的路由规则可以指定“对monolith.com的这些URI的调用转到microservice A”,等等。您可以看到一个关于如何工作的示例。

在Istio中,您可以使用虚拟服务。通过单个虚拟服务解决多个应用程序服务。例如,如果网格使用Kubernetes,则可以配置虚拟服务来处理特定命名空间中的所有服务。将单个虚拟服务映射到多个“真实”服务对于促进将单一应用程序转换为由不同的微服务构建的复合服务而无需服务的使用者适应转换特别有用。您的路由规则可以指定“对monolith.com的这些URI的调用转到microservice A”,等等。您可以看到这是如何工作的。Istio是一个服务网格,因此它不负责服务发现。服务网格将功能添加到服务->服务流量(监视、路由等)。因此,正如您所观察到的,在Kubernetes集群上运行时,Kubernetes将继续负责服务发现

正如Arghya的回答所述,使用Istio,您可以在此基础上应用VirtualService,它允许您“巧妙地”执行其他功能,如自定义路由,但这绝不能取代或更改底层Kubertees服务发现的功能

在我看来,VirtualService是一个令人困惑的术语,因为它听起来似乎在以某种方式取代Kubernete的现有功能。我更喜欢将VirtualService视为“自定义路由”


顺便说一句,如果你需要虚拟服务,你只需要一个。我的意思是,您可能在集群中定义了1000个服务(使用普通的Kubernetes服务构造)。但是,也许您只想将自定义路由规则应用于一个服务——这很好,您只需在Istio中定义一个VirtualService来处理这个问题

Istio是一个服务网格,因此它不负责服务发现。服务网格将功能添加到服务->服务流量(监视、路由等)。因此,正如您所观察到的,在Kubernetes集群上运行时,Kubernetes将继续负责服务发现

正如Arghya的回答所述,使用Istio,您可以在此基础上应用VirtualService,它允许您“巧妙地”执行其他功能,如自定义路由,但这绝不能取代或更改底层Kubertees服务发现的功能

在我看来,VirtualService是一个令人困惑的术语,因为它听起来似乎在以某种方式取代Kubernete的现有功能。我更喜欢将VirtualService视为“自定义路由”


顺便说一句,如果你需要虚拟服务,你只需要一个。我的意思是,您可能在集群中定义了1000个服务(使用普通的Kubernetes服务构造)。但是,也许您只想将自定义路由规则应用于一个服务——这很好,您只需在Istio中定义一个VirtualService来处理这个问题

是否可以使用虚拟服务从一个命名空间路由到另一个命名空间?是否可以使用虚拟服务从一个命名空间路由到另一个命名空间?