我正在测试 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 ponder09 61 天前 没做过,但按我的理解,服务器是不是可以不用 nacos 了,服务之间通过 service-name 直接访问了。 |
![]() | 3 ganbuliao 61 天前 是的因为 istio 相当于是代理 直接请求 pod 的 IP 就相当于绕过了 istio |
![]() | 4 stormtrooperx5 60 天前 你走 clusterIP 不就绕过 istio 了吗 |
![]() | 5 fitme OP @stormtrooperx5 clusterIP 看起来不会绕过,podIP 就绕过了(主要是我们之前服务注册到 nacos 了,获取的实例 IP(也就是 podIP )调用的,所以我在测试看能否不改动现有的实现治理 |
7 baerwang 59 天前 nacos sdk 应该有兼容 k8s 的处理 |