=== CMD: kubectl apply -f manifest.yaml === pod/client created deployment.apps/good-mixed created deployment.apps/bad-mixed created service/mixed-echo created destinationrule.networking.istio.io/mixed-echo-outlier created === CMD: kubectl -n istio-vt-t51 wait --for=condition=Ready pod/client --timeout=90s === pod/client condition met === CMD: kubectl -n istio-vt-t51 wait --for=condition=available deploy/good-mixed deploy/bad-mixed --timeout=60s === deployment.apps/good-mixed condition met deployment.apps/bad-mixed condition met === kubectl -n istio-vt-t51 get pods -o wide === NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES bad-mixed-5cfbb8fb6c-pwcw4 2/2 Running 0 5s 10.255.194.120 k8s-worker1 client 2/2 Running 0 5s 10.255.126.12 k8s-worker2 good-mixed-54dd79c984-hrm78 2/2 Running 0 5s 10.255.126.11 k8s-worker2 === CMD: sanity check destinationrule === apiVersion: networking.istio.io/v1 kind: DestinationRule metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"networking.istio.io/v1","kind":"DestinationRule","metadata":{"annotations":{},"name":"mixed-echo-outlier","namespace":"istio-vt-t51"},"spec":{"host":"mixed-echo.istio-vt-t51.svc.homelab.local","trafficPolicy":{"outlierDetection":{"baseEjectionTime":"10s","consecutive5xxErrors":1,"interval":"2s","maxEjectionPercent":50}}}} creationTimestamp: "2026-07-04T23:40:17Z" generation: 1 name: mixed-echo-outlier namespace: istio-vt-t51 resourceVersion: "13657753" uid: 10ca1e93-164d-405f-b106-20a5778dd2c5 spec: host: mixed-echo.istio-vt-t51.svc.homelab.local trafficPolicy: outlierDetection: baseEjectionTime: 10s consecutive5xxErrors: 1 interval: 2s maxEjectionPercent: 50 === CMD: BAD_IP=$(kubectl -n istio-vt-t51 get pod -l health=bad -o jsonpath='{.items[0].status.podIP}') === BAD_IP=10.255.194.120 === CMD: 45-iteration timeline loop (BAD_IP=10.255.194.120) === loop done === CMD: cat /tmp/ejection_timeline.txt === 1783208447 health_flags::healthy 1783208449 health_flags::healthy 1783208451 health_flags::healthy 1783208453 health_flags::healthy 1783208455 health_flags::healthy 1783208458 health_flags::healthy 1783208460 health_flags::healthy 1783208462 health_flags::healthy 1783208464 health_flags::healthy 1783208466 health_flags::healthy 1783208469 health_flags::healthy 1783208471 health_flags::healthy 1783208473 health_flags::healthy 1783208475 health_flags::healthy 1783208477 health_flags::healthy 1783208480 health_flags::healthy 1783208482 health_flags::healthy 1783208484 health_flags::healthy 1783208486 health_flags::healthy 1783208488 health_flags::healthy 1783208490 health_flags::healthy 1783208493 health_flags::healthy 1783208495 health_flags::healthy 1783208497 health_flags::healthy 1783208499 health_flags::healthy 1783208501 health_flags::healthy 1783208503 health_flags::healthy 1783208506 health_flags::healthy 1783208508 health_flags::healthy 1783208510 health_flags::healthy 1783208512 health_flags::healthy 1783208514 health_flags::healthy 1783208517 health_flags::healthy 1783208519 health_flags::healthy 1783208521 health_flags::healthy 1783208523 health_flags::healthy 1783208525 health_flags::healthy 1783208528 health_flags::healthy 1783208530 health_flags::healthy 1783208532 health_flags::healthy 1783208534 health_flags::healthy 1783208536 health_flags::healthy 1783208538 health_flags::healthy 1783208541 health_flags::healthy 1783208543 health_flags::healthy === FINDING: DestinationRule host 'svc.homelab.local' does not match Istio internal registry hostname 'svc.cluster.local' === route vhost domains for mixed-echo (port 80): mixed-echo.istio-vt-t51.svc.cluster.local:80 -> ['mixed-echo.istio-vt-t51.svc.cluster.local', 'mixed-echo.istio-vt-t51.svc.cluster.local.', 'mixed-echo', 'mixed-echo.istio-vt-t51.svc', 'mixed-echo.istio-vt-t51', '10.250.138.29'] cluster outlier_detection with original DR (host=svc.homelab.local): CLUSTER: outbound|80||mixed-echo.istio-vt-t51.svc.cluster.local outlier_detection: NONE istio telemetry confirms requests to homelab.local FQDN classified destination_service_name=PassthroughCluster (bypassing named cluster + DR policy): destination_service_name.PassthroughCluster.destination === RETRY (corrected DR host + curl target=ClusterIP 10.250.138.29 to match route vhost domains) === === CMD: 45-iteration timeline loop v2 (BAD_IP=10.255.194.120, target=http://10.250.138.29/) === === CMD: cat /tmp/ejection_timeline_v2.txt === 1783208784 health_flags::healthy 1783208786 health_flags::healthy 1783208788 health_flags::healthy 1783208790 health_flags::healthy 1783208792 health_flags::healthy 1783208795 health_flags:: 1783208797 health_flags:: 1783208799 health_flags:: 1783208801 health_flags:: 1783208803 health_flags:: 1783208805 health_flags::healthy 1783208808 health_flags::healthy 1783208810 health_flags::healthy 1783208812 health_flags:: 1783208814 health_flags:: 1783208816 health_flags:: 1783208819 health_flags:: 1783208821 health_flags:: 1783208823 health_flags::healthy 1783208825 health_flags:: 1783208827 health_flags:: 1783208830 health_flags:: 1783208832 health_flags:: 1783208834 health_flags:: 1783208836 health_flags:: 1783208838 health_flags:: 1783208840 health_flags:: 1783208843 health_flags:: 1783208845 health_flags::healthy 1783208847 health_flags:: 1783208849 health_flags:: 1783208851 health_flags:: 1783208853 health_flags:: 1783208856 health_flags:: 1783208858 health_flags:: 1783208860 health_flags:: 1783208862 health_flags:: 1783208864 health_flags:: 1783208867 health_flags:: 1783208869 health_flags:: 1783208871 health_flags:: 1783208873 health_flags:: 1783208875 health_flags:: 1783208877 health_flags::healthy 1783208880 health_flags:: === NOTE: spec grep pattern 'health_flags::[a-zA-Z_,]*' does not match actual Envoy 1.30 flag string === actual raw flag observed: health_flags::/failed_outlier_check (leading '/', lowercase, unlike spec assumption of 'FAILED_OUTLIER_CHECK') -> re-running timeline capture with corrected grep charclass [a-zA-Z_,/]* and longer duration (75 iters x 2s ~150s) to observe 2 full eject/recover cycles === CMD: 75-iteration corrected timeline loop v3 (BAD_IP=10.255.194.120, target=http://10.250.138.29/) === === CMD: cat /tmp/ejection_timeline_v3.txt === 1783208926 health_flags::healthy 1783208929 health_flags::healthy 1783208931 health_flags::/failed_outlier_check 1783208933 health_flags::/failed_outlier_check 1783208935 health_flags::/failed_outlier_check 1783208937 health_flags::/failed_outlier_check 1783208939 health_flags::/failed_outlier_check 1783208942 health_flags::healthy 1783208944 health_flags::/failed_outlier_check 1783208946 health_flags::/failed_outlier_check 1783208948 health_flags::/failed_outlier_check 1783208950 health_flags::/failed_outlier_check 1783208953 health_flags::/failed_outlier_check 1783208955 health_flags::/failed_outlier_check 1783208957 health_flags::/failed_outlier_check 1783208959 health_flags::/failed_outlier_check 1783208961 health_flags::/failed_outlier_check 1783208964 health_flags::/failed_outlier_check 1783208966 health_flags::/failed_outlier_check 1783208968 health_flags::/failed_outlier_check 1783208970 health_flags::/failed_outlier_check 1783208972 health_flags::/failed_outlier_check 1783208974 health_flags::/failed_outlier_check 1783208977 health_flags::/failed_outlier_check 1783208979 health_flags::/failed_outlier_check 1783208981 health_flags::/failed_outlier_check 1783208983 health_flags::/failed_outlier_check 1783208985 health_flags::/failed_outlier_check 1783208987 health_flags::/failed_outlier_check 1783208990 health_flags::/failed_outlier_check 1783208992 health_flags::/failed_outlier_check 1783208994 health_flags::/failed_outlier_check 1783208996 health_flags::healthy 1783208998 health_flags::/failed_outlier_check 1783209001 health_flags::/failed_outlier_check 1783209003 health_flags::/failed_outlier_check 1783209005 health_flags::/failed_outlier_check 1783209007 health_flags::/failed_outlier_check 1783209009 health_flags::/failed_outlier_check 1783209011 health_flags::/failed_outlier_check 1783209014 health_flags::/failed_outlier_check 1783209016 health_flags::/failed_outlier_check 1783209018 health_flags::/failed_outlier_check 1783209020 health_flags::/failed_outlier_check 1783209022 health_flags::/failed_outlier_check 1783209025 health_flags::/failed_outlier_check 1783209027 health_flags::/failed_outlier_check 1783209029 health_flags::/failed_outlier_check 1783209031 health_flags::/failed_outlier_check 1783209033 health_flags::/failed_outlier_check 1783209035 health_flags::/failed_outlier_check 1783209038 health_flags::healthy 1783209040 health_flags::/failed_outlier_check 1783209042 health_flags::/failed_outlier_check 1783209044 health_flags::/failed_outlier_check 1783209046 health_flags::/failed_outlier_check 1783209049 health_flags::/failed_outlier_check 1783209051 health_flags::/failed_outlier_check 1783209053 health_flags::/failed_outlier_check 1783209055 health_flags::/failed_outlier_check 1783209057 health_flags::/failed_outlier_check 1783209059 health_flags::/failed_outlier_check 1783209062 health_flags::/failed_outlier_check 1783209064 health_flags::/failed_outlier_check 1783209066 health_flags::/failed_outlier_check 1783209068 health_flags::/failed_outlier_check 1783209070 health_flags::/failed_outlier_check 1783209072 health_flags::/failed_outlier_check 1783209075 health_flags::/failed_outlier_check 1783209077 health_flags::/failed_outlier_check 1783209079 health_flags::/failed_outlier_check 1783209081 health_flags::/failed_outlier_check 1783209083 health_flags::/failed_outlier_check 1783209086 health_flags::/failed_outlier_check 1783209088 health_flags::/failed_outlier_check === CMD (literal spec, run against corrected v3 timeline for documentation): grep -n 'FAILED_OUTLIER_CHECK' /tmp/ejection_timeline_v3.txt | head -1 === === CMD (literal spec): grep -n 'healthy' /tmp/ejection_timeline_v3.txt | awk -F: '$1>1' | head -1 === 2:1783208929 health_flags::healthy === Corrected analysis (case-insensitive-aware) - segment durations, t0=1783208926 === HEALTHY rel_start= 0s rel_end= 3s last-seen-span= 3s EJECTED rel_start= 5s rel_end= 13s last-seen-span= 8s HEALTHY rel_start= 16s rel_end= 16s last-seen-span= 0s EJECTED rel_start= 18s rel_end= 68s last-seen-span= 50s HEALTHY rel_start= 70s rel_end= 70s last-seen-span= 0s EJECTED rel_start= 72s rel_end= 109s last-seen-span= 37s HEALTHY rel_start= 112s rel_end= 112s last-seen-span= 0s EJECTED rel_start= 114s rel_end= 162s last-seen-span= 48s