Learn how to debug Kubernetes applications using eBPF tracing when traditional logs and metrics fail you.
- Kubernetes 1.19+ cluster (local or cloud)
- kubectl installed and configured
- Cluster admin permissions
- Linux kernel 5.10+
# Install kubectl gadget plugin
kubectl krew install gadget
# Deploy to cluster
kubectl gadget deploy
# Verify
kubectl get pods -n gadgetDon't have krew? Install it here
kubectl create namespace demo-app
kubectl apply -f manifests/demo-app.yaml
# Wait for pods
kubectl wait --for=condition=ready pod -l app=frontend -n demo-app --timeout=300s
kubectl wait --for=condition=ready pod -l app=productcatalog -n demo-app --timeout=300sLocal cluster:
kubectl port-forward -n demo-app service/frontend 8080:80Then visit: http://localhost:8080
Cloud cluster:
kubectl get service frontend -n demo-app
# Use the EXTERNAL-IP# Trace request loops
kubectl gadget traceloop -n demo-appdemo-app.yaml- Main demo application (frontend + product catalog)demo-app-with-bug.yaml- Version with intentional bugs for debugging practicedemo-app-slow-backend.yaml- Simulates slow backend for performance debugging
Sample trace outputs showing:
- Healthy request flow
- Slow endpoint patterns
- Failed connection scenarios
kubectl gadget traceloop -n demo-app --podname frontend
curl http://localhost:8080/productskubectl gadget trace_tcp -n demo-app
# Observe connection patternskubectl gadget trace_tcp -n demo-appkubectl gadget trace_exec -n demo-appkubectl gadget trace_dns -n demo-appkubectl delete namespace demo-app
kubectl gadget undeployMIT License - see LICENSE
Emidowojo Opaluwa
- LinkedIn: Emidowojo Opaluwa
- Twitter: @Emidowojo
⭐ If this tutorial helped you, please star the repo!