| name | k8s-debug-pods |
| description | Debug Kurtosis pods on Kubernetes. Diagnose why pods are Pending, CrashLoopBackOff, ImagePullBackOff, or Evicted. Check node taints, tolerations, resource pressure, and pod events. Use when kurtosis engine start fails or pods aren't coming online. |
| compatibility | Requires kubectl with cluster access. |
| metadata | {"author":"ethpandaops","version":"1.0"} |
K8s Debug Pods
Diagnose and fix issues with Kurtosis pods on Kubernetes.
Quick triage
kubectl get pods -A | grep kurtosis
kubectl get pods -A | grep kurtosis | grep -v Running
kubectl describe pod <POD_NAME> -n <NAMESPACE> | tail -30
Common pod states and fixes
Pending — Unschedulable
The pod can't be scheduled because of node taints, resource pressure, or affinity rules.
kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
kubectl get nodes -o custom-columns=NAME:.metadata.name,CONDITIONS:.status.conditions[*].type
Fix: Add tolerations to the kurtosis config at ~/Library/Application Support/kurtosis/kurtosis-config.yml or fix the node condition.
ImagePullBackOff
The image tag doesn't exist on the registry.
kubectl describe pod <POD_NAME> -n <NAMESPACE> | grep -A5 "Image:"
docker manifest inspect <IMAGE>:<TAG>
Fix: Push the correct image tag, or fix the image reference in the code.
CrashLoopBackOff
The container starts but crashes immediately.
kubectl logs <POD_NAME> -n <NAMESPACE>
kubectl logs <POD_NAME> -n <NAMESPACE> --previous
Evicted
The node evicted the pod due to resource pressure.
kubectl get nodes -o custom-columns=NAME:.metadata.name,STATUS:.status.conditions[-1].type
kubectl get pods -A | grep Evicted | awk '{print $2 " -n " $1}' | xargs -L1 kubectl delete pod
Kurtosis-specific pod types
| Pod pattern | Component | Image source |
|---|
kurtosis-engine-* | Engine server | engine/server/Dockerfile |
kurtosis-api (in kt-* namespaces) | API Container (APIC) | core/server/Dockerfile |
kurtosis-logs-collector-* | Fluentbit DaemonSet | Pulled from registry |
kurtosis-logs-aggregator-* | Vector deployment | Pulled from registry |
remove-dir-pod-* | Fluentbit cleanup pods | busybox |
files-artifact-expander (init container) | Files artifacts | core/files_artifacts_expander/Dockerfile |
Engine start failures
If kurtosis engine start fails:
- Check if old kurtosis namespaces exist:
kubectl get ns | grep kurtosis
- Delete them:
kubectl get ns | grep kurtosis | awk '{print $1}' | xargs -r kubectl delete ns
- Retry engine start
Logs collector issues
The logs collector is a DaemonSet that runs on every node. If some nodes are unhealthy:
kubectl get ds -A | grep kurtosis
kubectl get pods -A | grep logs-collector | grep -v Running
Nodes with DiskPressure or other taints may not schedule collector pods — this is expected and the engine should start with a warning about partially degraded collection.