我正在测试 istio 的流量治理,部署了 A/B 服务到 k8s 并注册到 nacos ,给服务 B 设置了熔断器最大请求数为 1 。 做了如下验证
A 是 order-service B 是 user-service
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
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
wangxin3 18 天前
没做过,但按我的理解,服务器是不是可以不用 nacos 了,服务之间通过 service-name 直接访问了。
|
![]() |
3
ganbuliao 17 天前
是的因为 istio 相当于是代理 直接请求 pod 的 IP 就相当于绕过了 istio
|
![]() |
4
stormtrooperx5 17 天前
你走 clusterIP 不就绕过 istio 了吗
|
![]() |
5
fitme OP @stormtrooperx5 clusterIP 看起来不会绕过,podIP 就绕过了(主要是我们之前服务注册到 nacos 了,获取的实例 IP(也就是 podIP )调用的,所以我在测试看能否不改动现有的实现治理
|
7
baerwang 16 天前
nacos sdk 应该有兼容 k8s 的处理
|