What's Actually Happening
Istio is not routing traffic as expected. Requests don't reach the correct services or follow defined routing rules.
The Error You'll See
- Traffic not reaching canary version
- 404 errors from Istio proxy
- Wrong service receiving traffic
Why This Happens
- 1.VirtualService misconfiguration
- 2.DestinationRule issues
- 3.Gateway not configured
- 4.Subset labels mismatch
- 5.Sidecar not injected
Step 1: Check VirtualService
kubectl get virtualservice -n myapp
kubectl describe virtualservice myapp-vs -n myappStep 2: Check DestinationRule
kubectl get destinationrule -n myapp
kubectl describe destinationrule myapp-dr -n myappStep 3: Check Gateway
kubectl get gateway -n myapp
kubectl describe gateway myapp-gateway -n myappStep 4: Verify Service Labels
kubectl get pods -n myapp --show-labels
# Labels must match DestinationRule subsetStep 5: Check Sidecar Injection
kubectl get pods -n myapp -o jsonpath='{.items[*].spec.containers[*].name}' | grep istio-proxy
kubectl get namespace myapp --show-labels
# Should have istio-injection=enabledStep 6: Check Istiod Logs
kubectl logs -n istio-system deployment/istiodStep 7: Check Envoy Config
istioctl proxy-config cluster deployment/myapp -n myapp
istioctl proxy-config route deployment/myapp -n myappStep 8: Analyze Configuration
istioctl analyze -n myappStep 9: Check Service Entry
kubectl get serviceentry -n myappStep 10: Test Routing
curl -H "Host: myapp.example.com" http://istio-gateway/Related Issues
- [Fix Istio Proxy Sidecar Not Ready](/articles/fix-istio-proxy-sidecar-not-ready)
- [Fix Linkerd Proxy Sidecar Not Injecting](/articles/fix-linkerd-proxy-sidecar-not-injecting)