=== CMD: kubectl apply -f client-echo.yaml && kubectl -n istio-vt-t44 wait --for=condition=Ready pod/client --timeout=90s && kubectl -n istio-vt-t44 rollout status deploy/echo === pod/client created deployment.apps/echo created service/echo created pod/client condition met deployment "echo" successfully rolled out === CMD: CLIENT_START=$(kubectl -n istio-vt-t44 get pod client -o jsonpath='{.status.startTime}'); echo client_start=$CLIENT_START === client_start=2026-07-04T23:57:03Z === CMD: istioctl proxy-config route client.istio-vt-t44 -o json > /tmp/before-route.json === (saved, 1220 lines) before_route_has_timeout_count=0 === CMD: ( date +%s.%N; kubectl apply -f echo-verify-timeout.yaml; date +%s.%N ) > /tmp/apply_ts.txt === 1783209455.141374959 virtualservice.networking.istio.io/echo-verify-timeout created 1783209455.206541310 === CMD: for i in $(seq 1 20); do R=$(istioctl proxy-config route client.istio-vt-t44 -o json 2>/dev/null | grep -c '2.500s'); echo "t+${i}s route_has_timeout_count=$R"; if [ "$R" != "0" ]; then break; fi; sleep 1; done === t+1s route_has_timeout_count=2 === SUPPLEMENTARY (not in spec, for finer-grained propagation-window judgment): delete VS, confirm revert, reapply with tight polling === virtualservice.networking.istio.io "echo-verify-timeout" deleted from istio-vt-t44 namespace revert_poll i=1 count=2 revert_poll i=2 count=0 === SUPPLEMENTARY tight-timing reapply (sub-second granularity) === virtualservice.networking.istio.io/echo-verify-timeout created apply_start=1783209561.278604609 apply_end=1783209561.343823502 apply_duration=0.06521892547607422 poll i=1 since_apply_end=0.013s count=0 poll i=2 since_apply_end=0.105s count=2 found=1 === CMD: istioctl proxy-config route client.istio-vt-t44 -o json > /tmp/after-route.json === (saved, 1115 lines) === CMD: diff -u /tmp/before-route.json /tmp/after-route.json | grep -i timeout === - "timeout": "0s", - "maxGrpcTimeout": "0s" - "timeout": "0s", - "maxGrpcTimeout": "0s" - "timeout": "0s", - "maxGrpcTimeout": "0s" - "timeout": "0s", - "maxGrpcTimeout": "0s" - "timeout": "0s", - "maxGrpcTimeout": "0s" - "timeout": "0s", - "grpcTimeoutHeaderMax": "0s" - "timeout": "0s", - "maxGrpcTimeout": "0s" "timeout": "0s", "maxGrpcTimeout": "0s" - "timeout": "0s", + "timeout": "2.500s", - "maxGrpcTimeout": "0s" + "maxGrpcTimeout": "2.500s" + "config": "/apis/networking.istio.io/v1/namespaces/istio-vt-t44/virtual-service/echo-verify-timeout" "timeout": "0s", "maxGrpcTimeout": "0s" "timeout": "0s", "maxGrpcTimeout": "0s" + "timeout": "0s", + "maxGrpcTimeout": "0s" + "timeout": "0s", + "maxGrpcTimeout": "0s" "timeout": "0s", "maxGrpcTimeout": "0s" + "timeout": "0s", + "maxGrpcTimeout": "0s" "timeout": "0s", "maxGrpcTimeout": "0s" "timeout": "0s", "maxGrpcTimeout": "0s" "timeout": "0s", "maxGrpcTimeout": "0s" "timeout": "0s", - "grpcTimeoutHeaderMax": "0s" + "maxGrpcTimeout": "0s" "timeout": "0s", "maxGrpcTimeout": "0s" "timeout": "0s", "maxGrpcTimeout": "0s" - "timeout": "0s", - "maxGrpcTimeout": "0s" "timeout": "0s", "maxGrpcTimeout": "0s" + "timeout": "0s", + "grpcTimeoutHeaderMax": "0s" + "timeout": "0s", + "grpcTimeoutHeaderMax": "0s" === CMD: istioctl proxy-status | awk 'NR==1 || /client.istio-vt-t44/' === NAME CLUSTER ISTIOD VERSION SUBSCRIBED TYPES client.istio-vt-t44 Kubernetes istiod-797b447c94-cv7ns 1.30.0 4 (CDS,LDS,EDS,RDS) === CMD: kubectl -n istio-vt-t44 get pod client -o jsonpath='{.status.startTime}' (compare to CLIENT_START=2026-07-04T23:57:03Z) === 2026-07-04T23:57:03Z orig_client_start=2026-07-04T23:57:03Z === also check restartCount of istio-proxy container in client and echo pods === client istio-proxy restartCount=0 echo istio-proxy restartCount=0