kubernetes 在哪里放置Istio网络重试

f45qwnt8  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(97)

我是Istio的新手,不是KubernetesMaven,尽管我使用过后者。
为了简单起见,假设我有两个服务,都是Java/Sping Boot 。服务A监听来自外部世界的请求,服务B监听来自服务A的请求。服务B是可伸缩的,并且在某些点可能返回503。我希望服务A以可配置的非编程方式重试对服务B的调用。这里有一个博客/链接,我试图遵循,我认为是非常相似的:
https://samirbehara.com/2019/06/05/retry-design-pattern-with-istio/
我有两个问题:
1.这看起来很明显,但是如果我想定义一个虚拟可重试服务,我是将它添加到项目的现有application.yml文件中,还是在networking.istio.io/v1alpha3上有其他文件?
1.我应该在yaml/repo中为服务A或服务B定义重试配置吗?我可以想到构建Istio的原因。

z9ju0rcb

z9ju0rcb1#

如果可伸缩服务返回503,则有必要像serviceB的博客示例那样添加一个虚拟服务,并使serviceA连接到virtualServiceB,后者将重试ServiceB
现在,为了使其工作(从集群内部):

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: serviceB
spec:
  hosts:
  – serviceB
  http:
  – route:
    – destination:
        host: serviceB
    retries:
      attempts: 3
      perTryTimeout: 2s

字符串
这些行:

hosts:
  – serviceB


会告诉默认的Istio网关(网格)不将所有流量路由到serviceB,而是先路由到virtualServiceB,然后再路由到ServiceB。然后,您将从virtualServiceB重试到serviceB
希望这对你有帮助

相关问题