V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
fitme
V2EX  ›  程序员

请教 istio 流量治理

  •  
  •   fitme · 18 天前 · 1443 次点击

    我正在测试 istio 的流量治理,部署了 A/B 服务到 k8s 并注册到 nacos ,给服务 B 设置了熔断器最大请求数为 1 。 做了如下验证

    A 是 order-service B 是 user-service

    1. A 服务使用 nacos 返回的实例 IP 调用 B 服务,通过观察,发现熔断器没有工作
    kubectl -n test exec "$FORTIO_POD" -c fortio -- /usr/bin/fortio load -c 3 -qps 0 -n 10 -loglevel Warning http://order-service:8082/orders/1
    
    
    kubectl -n test exec "$ORDER_POD" -c istio-proxy pilot-agent request GET stats|grep 'user-service'|grep pending 
    
    cluster.outbound|8081||user-service.dd-test.svc.cluster.local;.circuit_breakers.default.remaining_pending: 1
    cluster.outbound|8081||user-service.dd-test.svc.cluster.local;.circuit_breakers.default.rq_pending_open: 0
    cluster.outbound|8081||user-service.dd-test.svc.cluster.local;.circuit_breakers.high.rq_pending_open: 0
    
    
    1. A 服务使用服务名调用 B 服务,通过观察
    cluster.outbound|8081||user-service.dd-test.svc.cluster.local;.circuit_breakers.default.remaining_pending: 1
    cluster.outbound|8081||user-service.dd-test.svc.cluster.local;.circuit_breakers.default.rq_pending_open: 0
    cluster.outbound|8081||user-service.dd-test.svc.cluster.local;.circuit_breakers.high.rq_pending_open: 0
    cluster.outbound|8081||user-service.dd-test.svc.cluster.local;.upstream_rq_pending_active: 0
    cluster.outbound|8081||user-service.dd-test.svc.cluster.local;.upstream_rq_pending_failure_eject: 0
    cluster.outbound|8081||user-service.dd-test.svc.cluster.local;.upstream_rq_pending_overflow: 4
    cluster.outbound|8081||user-service.dd-test.svc.cluster.local;.upstream_rq_pending_total: 6
    
    

    通过上述验证,我感觉是需要通过服务名(ClusterIP 也可以)调用的,可能测试或者观察的过程有问题,所以想到 v2 请教一下各位大佬

    问题

    1. istio 是必须要通过服务名调用才能实现治理吗?
    2. 如果通过服务名调用是不是现有微服务都需要改造,因为都是通过 nacos 获取实例 IP
    7 条回复    2025-08-22 08:48:35 +08:00
    wangxin3
        1
    wangxin3  
       18 天前
    没做过,但按我的理解,服务器是不是可以不用 nacos 了,服务之间通过 service-name 直接访问了。
    fitme
        2
    fitme  
    OP
       18 天前
    @wangxin3 新项目应该会这么干,现在想在之前基础上做流量治理,不改动或尽量少
    ganbuliao
        3
    ganbuliao  
       17 天前
    是的因为 istio 相当于是代理 直接请求 pod 的 IP 就相当于绕过了 istio
    stormtrooperx5
        4
    stormtrooperx5  
       17 天前
    你走 clusterIP 不就绕过 istio 了吗
    fitme
        5
    fitme  
    OP
       17 天前
    @stormtrooperx5 clusterIP 看起来不会绕过,podIP 就绕过了(主要是我们之前服务注册到 nacos 了,获取的实例 IP(也就是 podIP )调用的,所以我在测试看能否不改动现有的实现治理
    fitme
        6
    fitme  
    OP
       17 天前
    @ganbuliao 恩,谢谢
    baerwang
        7
    baerwang  
       16 天前
    nacos sdk 应该有兼容 k8s 的处理
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2501 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:38 · PVG 18:38 · LAX 03:38 · JFK 06:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.