CertGrid CertGrid
Troubleshooting·Certified Kubernetes Application Developer

Events, describe and kubectl top

Almost every "why is this broken" question is answered by events, and almost everyone reads them the slow way. This creates two Pods that fail differently - one unschedulable, one unpullable - and works through sorting and filtering events, reading describe's own Events section, and using top for the numbers that events never contain.

Observability and Maintenance Guide 43 of 44 Beginner

Events expire. The API server's --event-ttl defaults to one hour, so an event from this morning is simply gone - which is why kubectl get events on a Pod that has been failing all night is often empty while the Pod's status still shows the problem.

Four nodes, which is why the FailedScheduling message below counts `0/4` and explains each node's refusal separately.
Server NameIP AddressOSRolesCPURAMHDD
CKA1001192.168.0.175Ubuntu 26.04 LTSControl Plane Node2 Core4 GB50 GB
CKA1001-NODE01192.168.0.176Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB
CKA1001-NODE02192.168.0.177Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB
CKA1001-NODE03192.168.0.178Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB

This guide includes

Use this when something will not run and you need the reason quickly. This matters because events explain decisions while top reports consumption - they answer completely different questions, and only one of the two expires.

Before you start

  1. Two Pods that will not run

  2. Events, sorted and filtered

  3. describe puts it in one place

  4. top, for what events never tell you

  5. Events do not last

Official sources