Kubernetes troubleshooting with describe, events, and logs
Summary
In Kubernetes troubleshooting, describe, events, and logs answer different questions. describe shows the object’s current state and recent events, events shows control-plane and kubelet decisions over time, and logs shows what the containerized application wrote after it started.
Document Information
- Written date: 2026-04-29
- Verification date: 2026-04-29
-
Document type: tutorial analysis - Test environment: No live execution. This post is based on Kubernetes official documentation and kubectl reference pages.
- Test version: Kubernetes documentation checked on 2026-04-29. No local cluster or kubectl version is fixed.
- Evidence level: official documentation
Problem Statement
Jumping straight to kubectl logs can miss failures that happen before the container starts, such as scheduling or image pull failures. Looking only at events can miss application exceptions that happen inside a running container.
This post gives a first-response order for Pod or Deployment failures using describe, events, and logs.
Verified Facts
- Kubernetes debug documentation separates application state, events, and logs as troubleshooting inputs. Evidence: Kubernetes Debug Applications
- Kubernetes documentation demonstrates using
kubectl describe podto inspect events for a Pending Pod. Evidence: Kubernetes Debug Running Pods - Official documentation shows
kubectl logs ${POD_NAME} -c ${CONTAINER_NAME}for current logs and--previousfor a previously crashed container. Evidence: Kubernetes Examining pod logs kubectl eventscan show namespace-wide events, all-namespace events, or events filtered to a specific resource. Evidence: kubectl events
Reproduction Steps
The first goal is to identify where the workload stopped.
- Find the affected workload.
kubectl get pods -n <namespace>
kubectl get deploy,rs,pod -n <namespace>
- Inspect the Pod description.
kubectl describe pod <pod-name> -n <namespace>
Check these fields first:
Status,Conditions:PodScheduled,Initialized,Ready,ContainersReadyContainers: image, command, args, ports, env, mountsState,Last State,Restart CountEvents: scheduler, kubelet, image pull, and probe messages
- Re-read events in time order.
kubectl events -n <namespace> --for pod/<pod-name>
kubectl events -n <namespace> --types=Warning
kubectl events --all-namespaces --types=Warning
When many Pods fail together, namespace-level or cluster-level events can be faster than per-Pod describe.
- Read container logs.
kubectl logs <pod-name> -n <namespace> -c <container-name>
kubectl logs <pod-name> -n <namespace> -c <container-name> --previous
--previous matters for cases such as CrashLoopBackOff, where the current container may have already restarted.
- Classify likely causes by status.
Pending+FailedScheduling: node selector, taint/toleration, resource request, or PVC bindingImagePullBackOfforErrImagePull: image name, tag, registry auth, network, or pull policyCrashLoopBackOff:Last State, exit code,--previouslogs, or probe configurationRunningbutReady=False: readiness probe, dependency, or service endpoint- Normal events but application failure: app log, config, secret mount, or environment variable
Observations
describeis a compact view of one object’s current state plus recent events.eventsis better for the timeline of scheduler, controller, and kubelet decisions.logsonly helps after the container has emitted output. If the Pod fails before startup, logs may be empty.
Interpretation
In my view, the useful default order is: use describe to narrow the layer, use events to understand the control-plane timeline, then use logs to inspect application behavior inside the container.
Opinion: incident notes should keep namespace, pod, container, commands run, key event reason, exit code, restart count, and whether --previous was used. That is usually more useful than pasting the entire raw log.
Limitations
- Kubernetes events are not a long-term incident archive. Long-running investigations need separate logging and observability.
- Managed Kubernetes, CNI, CSI, registry, and node OS differences can change the exact messages and likely causes.
- This post covers first response for Pod/Deployment issues, not the full space of control-plane, DNS, storage, or network-policy failures.
References
- Kubernetes Debug Applications
- Kubernetes Debug Running Pods
- kubectl describe
- kubectl logs
- kubectl events
Change Log
- 2026-04-29: Initial draft.
- 2026-04-29: Added
describe,events, andlogstroubleshooting order with status-based interpretation.
댓글남기기