目标规则似乎不适用于 istio 的内部服务调用

问题描述 投票:0回答:0

我有两个服务都启用了 DestinationRule。我已经能够单独实现对服务的外部调用的会话亲和力。当我尝试执行从服务 A 到服务 B 的内部调用时,DestinationRule 应用于服务 A 但未应用于服务 B。

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: isito-affinity-service-a
  namespace: dev
spec:
  host: service-a.dev.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      consistentHash:
        httpHeaderName: x-connection

应用了服务 B 的类似目标规则。我能够验证这一点,因为我有在 Flask 中运行的服务,并且我在服务启动时生成了一个随机 UUID。此 UUID 随响应一起返回。每次我直接点击服务时,我都会得到相同的随机 ID,但是一旦我点击 API 来执行内部服务调用,我就会得到内部调用的服务的随机 ID。我已经在互联网上搜索了适当的参考资料或文档,但我找不到任何东西。

我正在使用请求包进行从服务 A 到服务 B 的内部服务调用,就像这样

response = requests.get("http://service-b.dev.svc.cluster.local/user/internal", headers=request.headers)

我还确保为 k8 中的 dev 命名空间自动注入 sidecar。我还为服务 A 和 B 配置了 VirtualService。我的所有设置都已完成并使用 minikube 进行了测试。如果有人有解决这个问题的想法,那将非常有帮助。提前致谢。

TLDR:DestinationRule 未应用于 istio 的内部服务调用

kubernetes istio istio-gateway istio-sidecar
© www.soinside.com 2019 - 2024. All rights reserved.