+ kubectl apply -f manifest.yaml pod/client created configmap/coredns-corefile-verify created deployment.apps/lab-dns-verify created service/lab-dns-verify created deployment.apps/backend-a created service/backend-a created deployment.apps/backend-b created service/backend-b created The Deployment "gslb-client" is invalid: spec.template.spec.dnsConfig.nameservers[0]: Invalid value: "REPLACE_WITH_LABDNS_CLUSTERIP": must be a valid IP address, (e.g. 10.9.8.7 or 2001:db8::ffff) + LABDNS_IP=$(kubectl -n istio-vt-t49 get svc lab-dns-verify -o jsonpath='{.spec.clusterIP}'); echo LABDNS_IP=$LABDNS_IP LABDNS_IP=10.250.177.219 + kubectl apply -f manifest.yaml # re-apply after substituting real lab-dns-verify ClusterIP into gslb-client dnsConfig pod/client configured configmap/coredns-corefile-verify unchanged deployment.apps/lab-dns-verify unchanged service/lab-dns-verify unchanged deployment.apps/backend-a unchanged service/backend-a unchanged deployment.apps/backend-b unchanged service/backend-b unchanged deployment.apps/gslb-client created + kubectl -n istio-vt-t49 rollout status deploy/lab-dns-verify deploy/backend-a deploy/backend-b deploy/gslb-client --timeout=90s deployment "lab-dns-verify" successfully rolled out deployment "backend-a" successfully rolled out deployment "backend-b" successfully rolled out Waiting for deployment "gslb-client" rollout to finish: 0 of 1 updated replicas are available... deployment "gslb-client" successfully rolled out + kubectl -n istio-vt-t49 wait --for=condition=Ready pod/client --timeout=90s pod/client condition met + kubectl -n istio-vt-t49 get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES backend-a-fdfd97f84-4bswf 1/1 Running 0 29s 10.255.194.73 k8s-worker1 backend-b-7d4f8fdc4b-8tczp 1/1 Running 0 29s 10.255.194.70 k8s-worker1 client 2/2 Running 0 29s 10.255.159.181 k8s-master1 gslb-client-6c56c8cc69-s5g5c 3/3 Running 0 11s 10.255.194.121 k8s-worker1 lab-dns-verify-76d6c5bff6-ncqzm 2/2 Running 0 29s 10.255.194.74 k8s-worker1 + BA_IP=$(kubectl -n istio-vt-t49 get svc backend-a -o jsonpath='{.spec.clusterIP}'); BB_IP=$(kubectl -n istio-vt-t49 get svc backend-b -o jsonpath='{.spec.clusterIP}'); echo BA_IP=$BA_IP BB_IP=$BB_IP; echo "BA_IP=$BA_IP" > /tmp/ips.env; echo "BB_IP=$BB_IP" >> /tmp/ips.env BA_IP=10.250.207.189 BB_IP=10.250.28.59 + kubectl -n istio-vt-t49 exec deploy/gslb-client -c curltools -- sh -c "echo 10.250.207.189 gslb.verify.internal > /hosts_write" 2>/dev/null; kubectl -n istio-vt-t49 exec deploy/lab-dns-verify -c writer -- sh -c "echo 10.250.207.189 gslb.verify.internal > /hosts/addn" + kubectl -n istio-vt-t49 exec deploy/lab-dns-verify -c writer -- cat /hosts/addn 10.250.207.189 gslb.verify.internal + kubectl apply -f - <&1 || true Server: 10.250.177.219 Address: 10.250.177.219:53 Name: gslb.verify.internal Address: 10.250.207.189 + kubectl -n istio-vt-t49 exec deploy/gslb-client -c curltools -- curl -v -m 5 http://gslb.verify.internal/ 2>&1 | tail -30 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Host gslb.verify.internal:80 was resolved. * IPv6: (none) * IPv4: 10.250.207.189 * Trying 10.250.207.189:80... * Connected to gslb.verify.internal (10.250.207.189) port 80 * using HTTP/1.x > GET / HTTP/1.1 > Host: gslb.verify.internal > User-Agent: curl/8.14.1 > Accept: */* > * Request completely sent off 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0* Operation timed out after 5002 milliseconds with 0 bytes received 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 * closing connection #0 curl: (28) Operation timed out after 5002 milliseconds with 0 bytes received command terminated with exit code 28 + istioctl -n istio-vt-t49 proxy-config listener deploy/gslb-client --port 80 ADDRESSES PORT MATCH DESTINATION 0.0.0.0 80 Trans: raw_buffer; App: http/1.1,h2c Route: 80 0.0.0.0 80 ALL PassthroughCluster + istioctl -n istio-vt-t49 proxy-config route deploy/gslb-client --name 80 -o json [ { "name": "80", "virtualHosts": [ { "name": "echo-netb.istio-vt-t45.svc.cluster.local:80", "domains": [ "echo-netb.istio-vt-t45.svc.cluster.local", "echo-netb.istio-vt-t45.svc.cluster.local.", "echo-netb.istio-vt-t45", "echo-netb.istio-vt-t45.svc", "10.250.246.42" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||echo-netb.istio-vt-t45.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "echo-netb.istio-vt-t45.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "echo.istio-verify.svc.cluster.local:80", "domains": [ "echo.istio-verify.svc.cluster.local", "echo.istio-verify.svc.cluster.local.", "echo.istio-verify", "echo.istio-verify.svc", "10.250.152.233" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||echo.istio-verify.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "echo.istio-verify.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "echo.istio-vt-t45.svc.cluster.local:80", "domains": [ "echo.istio-vt-t45.svc.cluster.local", "echo.istio-vt-t45.svc.cluster.local.", "echo.istio-vt-t45", "echo.istio-vt-t45.svc", "10.250.41.245" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||echo.istio-vt-t45.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "echo.istio-vt-t45.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "echo.istio-vt-t47.svc.cluster.local:80", "domains": [ "echo.istio-vt-t47.svc.cluster.local", "echo.istio-vt-t47.svc.cluster.local.", "echo.istio-vt-t47", "echo.istio-vt-t47.svc", "10.250.121.192" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||echo.istio-vt-t47.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "echo.istio-vt-t47.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "echo.istio-vt-t50.svc.cluster.local:80", "domains": [ "echo.istio-vt-t50.svc.cluster.local", "echo.istio-vt-t50.svc.cluster.local.", "echo.istio-vt-t50", "echo.istio-vt-t50.svc", "10.250.159.211" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||echo.istio-vt-t50.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "echo.istio-vt-t50.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "echo.istio-vt-t62.svc.cluster.local:80", "domains": [ "echo.istio-vt-t62.svc.cluster.local", "echo.istio-vt-t62.svc.cluster.local.", "echo.istio-vt-t62", "echo.istio-vt-t62.svc", "10.250.16.195" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||echo.istio-vt-t62.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "echo.istio-vt-t62.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "gslb.verify.internal:80", "domains": [ "gslb.verify.internal", "gslb.verify.internal." ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||gslb.verify.internal", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "gslb.verify.internal:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "istio-egressgateway.istio-system.svc.cluster.local:80", "domains": [ "istio-egressgateway.istio-system.svc.cluster.local", "istio-egressgateway.istio-system.svc.cluster.local.", "istio-egressgateway.istio-system", "istio-egressgateway.istio-system.svc", "10.250.13.92" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||istio-egressgateway.istio-system.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "istio-egressgateway.istio-system.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "istio-ingressgateway.istio-system.svc.cluster.local:80", "domains": [ "istio-ingressgateway.istio-system.svc.cluster.local", "istio-ingressgateway.istio-system.svc.cluster.local.", "istio-ingressgateway.istio-system", "istio-ingressgateway.istio-system.svc", "10.250.173.46" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||istio-ingressgateway.istio-system.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "istio-ingressgateway.istio-system.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "mixed-echo.istio-vt-t51.svc.cluster.local:80", "domains": [ "mixed-echo.istio-vt-t51.svc.cluster.local", "mixed-echo.istio-vt-t51.svc.cluster.local.", "mixed-echo.istio-vt-t51", "mixed-echo.istio-vt-t51.svc", "10.250.138.29" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||mixed-echo.istio-vt-t51.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "mixed-echo.istio-vt-t51.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "mock.istio-verify-ext.svc.cluster.local:80", "domains": [ "mock.istio-verify-ext.svc.cluster.local", "mock.istio-verify-ext.svc.cluster.local.", "mock.istio-verify-ext", "mock.istio-verify-ext.svc", "10.250.183.220" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||mock.istio-verify-ext.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "mock.istio-verify-ext.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "mock.istio-verify-ext.svc.homelab.local:80", "domains": [ "mock.istio-verify-ext.svc.homelab.local" ], "routes": [ { "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||mock.istio-verify-ext.svc.homelab.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 3, "perTryTimeout": "1s", "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "metadata": { "filterMetadata": { "istio": { "config": "/apis/networking.istio.io/v1/namespaces/istio-vt-t47/virtual-service/hop-gw-route-to-mesh" } } }, "decorator": { "operation": "mock.istio-verify-ext.svc.homelab.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "sleep.mesh-test.svc.cluster.local:80", "domains": [ "sleep.mesh-test.svc.cluster.local", "sleep.mesh-test.svc.cluster.local.", "sleep.mesh-test", "sleep.mesh-test.svc", "10.250.184.197" ], "routes": [ { "name": "default", "match": { "prefix": "/" }, "route": { "cluster": "outbound|80||sleep.mesh-test.svc.cluster.local", "timeout": "0s", "retryPolicy": { "retryOn": "connect-failure,refused-stream,unavailable,cancelled,retriable-status-codes", "numRetries": 2, "retryHostPredicate": [ { "name": "envoy.retry_host_predicates.previous_hosts", "typedConfig": { "@type": "type.googleapis.com/envoy.extensions.retry.host.previous_hosts.v3.PreviousHostsPredicate" } } ], "hostSelectionRetryMaxAttempts": "5" }, "maxGrpcTimeout": "0s" }, "decorator": { "operation": "sleep.mesh-test.svc.cluster.local:80/*" } } ], "includeRequestAttemptCount": true }, { "name": "allow_any", "domains": [ "*" ], "routes": [ { "name": "allow_any", "match": { "prefix": "/" }, "route": { "cluster": "PassthroughCluster", "timeout": "0s", "maxGrpcTimeout": "0s" } } ], "includeRequestAttemptCount": true } ], "validateClusters": false, "maxDirectResponseBodySizeBytes": 1048576, "ignorePortInHostMatching": true } ] [FIXTURE FIX] ServiceEntry declares port 80(http) but backend-a/backend-b Services only expose port 8080 (no ClusterIP NAT for port 80) -> Envoy's outbound connect to :80 black-holes (curl timed out, 0 bytes, exit 28). Patching backend-a/backend-b Services to add port 80 -> targetPort 8080 so the HTTP path can actually be exercised. This does not touch ServiceEntry resolution modes under test. + kubectl -n istio-vt-t49 patch svc backend-a --type=json -p '[{"op":"add","path":"/spec/ports/-","value":{"name":"http80","port":80,"targetPort":8080}}]' The Service "backend-a" is invalid: spec.ports[0].name: Required value + kubectl -n istio-vt-t49 patch svc backend-b --type=json -p '[{"op":"add","path":"/spec/ports/-","value":{"name":"http80","port":80,"targetPort":8080}}]' The Service "backend-b" is invalid: spec.ports[0].name: Required value + kubectl -n istio-vt-t49 exec deploy/gslb-client -c curltools -- curl -sv -m 5 http://gslb.verify.internal/ 2>&1 | tail -20 * Host gslb.verify.internal:80 was resolved. * IPv6: (none) * IPv4: 10.250.207.189 * Trying 10.250.207.189:80... * Connected to gslb.verify.internal (10.250.207.189) port 80 * using HTTP/1.x > GET / HTTP/1.1 > Host: gslb.verify.internal > User-Agent: curl/8.14.1 > Accept: */* > * Request completely sent off * Operation timed out after 5002 milliseconds with 0 bytes received * closing connection #0 command terminated with exit code 28 + kubectl -n istio-vt-t49 patch svc backend-a --type=json -p '[{"op":"replace","path":"/spec/ports","value":[{"name":"app","port":8080,"targetPort":8080},{"name":"http80","port":80,"targetPort":8080}]}]' service/backend-a patched + kubectl -n istio-vt-t49 patch svc backend-b --type=json -p '[{"op":"replace","path":"/spec/ports","value":[{"name":"app","port":8080,"targetPort":8080},{"name":"http80","port":80,"targetPort":8080}]}]' service/backend-b patched + sleep 2 + kubectl -n istio-vt-t49 exec deploy/gslb-client -c curltools -- curl -sv -m 5 http://gslb.verify.internal/ 2>&1 | tail -20 * Connected to gslb.verify.internal (10.250.207.189) port 80 * using HTTP/1.x > GET / HTTP/1.1 > Host: gslb.verify.internal > User-Agent: curl/8.14.1 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < x-app-name: http-echo < x-app-version: 0.2.3 < date: Sat, 04 Jul 2026 23:50:27 GMT < content-length: 10 < content-type: text/plain; charset=utf-8 < x-envoy-upstream-service-time: 0 < server: envoy < { [10 bytes data] * Connection #0 to host gslb.verify.internal left intact backend-a + kubectl -n istio-vt-t49 exec deploy/gslb-client -c fortio -- fortio load -c 1 -qps 2 -t 30s -keepalive http://gslb.verify.internal/ > /tmp/fortio.log 2>&1 & + sleep 8 + kubectl -n istio-vt-t49 exec deploy/gslb-client -c istio-proxy -- pilot-agent request GET stats > /tmp/stats_before_full.txt 2>&1; grep -E 'cluster.outbound.*gslb.verify.internal.*(upstream_cx_destroy|membership_change)' /tmp/stats_before_full.txt | tee /tmp/before_logical.txt cluster.outbound|80||gslb.verify.internal;.membership_change: 2 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy: 3 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy_local: 3 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy_local_with_active_rq: 0 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy_remote: 0 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy_remote_with_active_rq: 0 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy_with_active_rq: 0 + kubectl -n istio-vt-t49 exec deploy/lab-dns-verify -c writer -- sh -c "echo 10.250.28.59 gslb.verify.internal > /hosts/addn" + kubectl -n istio-vt-t49 exec deploy/lab-dns-verify -c writer -- cat /hosts/addn 10.250.28.59 gslb.verify.internal + sleep 10 + kubectl -n istio-vt-t49 exec deploy/gslb-client -c curltools -- nslookup gslb.verify.internal Server: 10.250.177.219 Address: 10.250.177.219:53 Name: gslb.verify.internal Address: 10.250.28.59 + kubectl -n istio-vt-t49 exec deploy/gslb-client -c istio-proxy -- pilot-agent request GET stats > /tmp/stats_after_full.txt 2>&1; grep -E 'cluster.outbound.*gslb.verify.internal.*(upstream_cx_destroy|membership_change)' /tmp/stats_after_full.txt | tee /tmp/after_logical.txt cluster.outbound|80||gslb.verify.internal;.membership_change: 2 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy: 3 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy_local: 3 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy_local_with_active_rq: 0 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy_remote: 0 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy_remote_with_active_rq: 0 cluster.outbound|80||gslb.verify.internal;.upstream_cx_destroy_with_active_rq: 0 + diff /tmp/before_logical.txt /tmp/after_logical.txt; echo DIFF_EXIT=$? DIFF_EXIT=0 + kubectl -n istio-vt-t49 exec deploy/gslb-client -c curltools -- curl -s http://gslb.verify.internal/ backend-b + cat /tmp/fortio.log | tail -30 {"ts":1783209066.624276,"level":"info","r":1,"file":"periodic.go","line":581,"msg":"Run ended","run":0,"elapsed":30002035693,"calls":60,"qps":1.9998642963416995} Sleep times : count 59 avg 0.50696587 +/- 0.0003501 min 0.506394057 max 0.507892473 sum 29.9109862 Aggregated Function Time : count 60 avg 0.00087608397 +/- 0.0001086 min 0.000573638 max 0.0011182 sum 0.052565038 # range, mid point, percentile, count >= 0.000573638 <= 0.001 , 0.000786819 , 85.00, 51 > 0.001 <= 0.0011182 , 0.0010591 , 100.00, 9 # target 50% 0.000820928 # target 75% 0.000948837 # target 90% 0.0010394 # target 99% 0.00111032 # target 99.9% 0.00111741 Error cases : no data # Socket and IP used for each connection: [0] 1 socket used, resolved to 10.250.207.189:80, connection timing : count 1 avg 9.4989e-05 +/- 0 min 9.4989e-05 max 9.4989e-05 sum 9.4989e-05 Connection time histogram (s) : count 1 avg 9.4989e-05 +/- 0 min 9.4989e-05 max 9.4989e-05 sum 9.4989e-05 # range, mid point, percentile, count >= 9.4989e-05 <= 9.4989e-05 , 9.4989e-05 , 100.00, 1 # target 50% 9.4989e-05 # target 75% 9.4989e-05 # target 90% 9.4989e-05 # target 99% 9.4989e-05 # target 99.9% 9.4989e-05 Sockets used: 1 (for perfect keepalive, would be 1) Uniform: false, Jitter: false, Catchup allowed: true IP addresses distribution: 10.250.207.189:80: 1 Code 200 : 60 (100.0 %) Response Header Sizes : count 60 avg 211 +/- 0 min 211 max 211 sum 12660 Response Body/Total Sizes : count 60 avg 221 +/- 0 min 221 max 221 sum 13260 All done 60 calls (plus 1 warmup) 0.876 ms avg, 2.0 qps