What's Actually Happening

Linkerd is not routing traffic correctly. Requests don't follow defined traffic splits or reach intended services.

The Error You'll See

  • Traffic not split between versions
  • Requests failing with 503
  • Timeout errors from proxy

Why This Happens

  1. 1.Proxy not injected
  2. 2.Service profile misconfigured
  3. 3.Traffic split issues
  4. 4.Service discovery problems
  5. 5.Certificate errors

Step 1: Check Proxy Injection

bash
kubectl get pods -n myapp -o yaml | grep linkerd.io/proxy
linkerd check --proxy

Step 2: Check Service Profile

bash
kubectl get serviceprofile -n myapp
kubectl describe serviceprofile myapp-svc -n myapp

Step 3: Check Traffic Split

bash
kubectl get trafficsplit -n myapp
kubectl describe trafficsplit myapp-split -n myapp

Step 4: Verify Service Labels

bash
kubectl get svc -n myapp --show-labels
# Services must have correct labels for traffic split

Step 5: Check Linkerd Logs

bash
linkerd logs --control-plane-component=destination
kubectl logs -n linkerd deployment/linkerd-destination

Step 6: Check Proxy Logs

bash
kubectl logs deployment/myapp -n myapp -c linkerd-proxy

Step 7: Run Linkerd Check

bash
linkerd check
linkerd check --proxy

Step 8: Check Certificate

bash
linkerd check --proxy --wait=60s
linkerd identity -n myapp deployment/myapp

Step 9: Restart Proxy

bash
kubectl rollout restart deployment/myapp -n myapp

Step 10: Test Traffic

bash
linkerd viz stat -n myapp deploy/myapp
linkerd viz tap -n myapp deploy/myapp
  • [Fix Linkerd Proxy Sidecar Not Injecting](/articles/fix-linkerd-proxy-sidecar-not-injecting)
  • [Fix Istio Traffic Not Routing](/articles/fix-istio-traffic-not-routing)