Kubernetes Events in Kubernetes
Learn how Kubernetes tells you, in short plain messages, what it is doing to your applications, why something failed, and how to use that running diary to find problems fast.
Imagine a busy restaurant kitchen where a manager stands at the pass with a small notepad. Whenever something happens, the manager jots down a line: an order arrived, a chef started the soup, the oven ran out of gas, a waiter dropped a tray. Nobody reads the notepad while everything goes well. But the moment a customer complains that dinner is late, the notepad becomes the most valuable object in the building, because it says exactly what happened and in which order. Kubernetes keeps a notepad just like that. Each line on it is called an event, and this guide teaches you how to read it, trust it, and use it.
1What Is a Kubernetes Event?
An event is a short, timestamped message that Kubernetes records to describe something that happened to an object in your cluster.
The Simple Definition
Kubernetes is a system that runs applications across many computers. While it works, it constantly makes decisions and takes actions. It picks a computer for a new application, downloads a container image, starts a container, notices that a container crashed, and restarts it. An event is a small record of one such moment. It says what happened, which object it happened to, and when.
Events are themselves objects stored inside the cluster, just like the applications they describe. This is a neat design, because it means you can ask the cluster about events using the very same tools you use to ask about anything else. You do not need a separate product to see them. They are part of the platform from the start.
Think of the flight information board at an airport. It does not fly the planes and it does not carry your luggage. It simply announces what is going on: boarding, delayed, departed, landed. Events are the announcement board of your cluster. They do not fix anything, but they tell you what the cluster is doing and when it hit a problem.
What an Event Is Not
Beginners often expect events to be a complete history of everything. They are not. An event is a brief summary of a notable moment, not a full transcript. The detailed output that an application prints while it runs belongs to logs, and the numbers that describe how busy a system is belong to metrics. Events sit between the two, and they answer a very specific question: what did Kubernetes itself do or decide about this object?
Events are also temporary by default. The cluster keeps them for a short time, usually about one hour, and then throws them away. That surprises people who come back the next morning to investigate a night-time problem and find the notepad empty. Later chapters explain why this happens and how to keep events longer.
Events tell you what the platform did. Logs tell you what your application said. When something breaks, you usually need both, and events are the faster place to start.
2Why Events Exist
Kubernetes works in the background and makes many decisions on your behalf, so it needs a way to explain itself.
The Problem of the Silent Cluster
When you ask Kubernetes to run an application, you describe what you want rather than how to do it. You say that you want three copies of a web server, and the cluster works out the rest. This is powerful, but it hides the steps. If a copy does not start, nothing in your request tells you why. Was there no room on any computer? Was the image name misspelled? Was a required secret missing? Without some way to see the reasoning, you would be guessing.
Events solve this by letting each component leave a note at the moment it acts or fails to act. The scheduler writes a note when it cannot find a suitable computer. The node agent writes a note when an image download fails. The controllers write a note when they create or delete copies of your application. Together, these notes form a trail you can follow from the request to the outcome.
When you order a parcel online, the tracking page shows every step: packed, handed to the courier, arrived at the local depot, out for delivery, attempted delivery. If the parcel is late, the tracking history tells you where it got stuck. Kubernetes events are the tracking history for your application.
Design Goals Behind Events
Visibility
Make the invisible decisions of the cluster visible to the person who owns the application.
Low Cost
Keep messages short and limited in number so that reporting never slows the cluster down.
Attachment
Tie every message to the exact object it concerns, so you can look it up from that object.
Temporary Storage
Store messages briefly, because they are most useful right after the action they describe.
Events in the Larger Picture of Observability
Teams that run applications on Kubernetes soon discover that no single tool tells the whole story. Events add the missing voice of the platform itself. Without them, an engineer sees only the outcome, such as a pod that is not running, and must guess at the steps that led there. With them, the engineer reads a short account written at the moment of each decision. This is why experienced operators treat events as a first-class source of information, right beside logs and metrics, even though the messages are small.
Events also help people who are new to Kubernetes learn how it works. Watching the events of a healthy deployment teaches the order of operations better than many diagrams, because each line is a real step that the cluster took. Many engineers say that they understood scheduling, image pulling, and health checks only after spending an afternoon watching events during experiments.
3The Building Blocks You Need First
A few basic Kubernetes ideas make everything about events easier to understand.
Objects, Controllers, and the API Server
Everything in Kubernetes is an object: a description of something you want or something that exists. A pod is an object, a deployment is an object, a node is an object, and, as you have learned, an event is an object too. All these objects live behind a front door called the API server. Every tool and every component talks to the cluster by sending requests to the API server, and the API server stores the results in a database.
Controllers are small programs that watch objects and try to make reality match what the objects describe. If a deployment says three copies should exist and only two do, a controller creates the missing one. Controllers are among the busiest producers of events, because they act constantly and each action deserves a note.
Pod
The smallest runnable unit, wrapping one or more containers that share a network and storage.
Node
A computer, physical or virtual, that runs pods and reports to the cluster.
Kubelet
The agent on every node that starts containers and reports on their health.
Scheduler
The component that decides which node should run each new pod.
API Server
The front door of the cluster, where all requests arrive and where objects are stored.
Namespace
A named section of the cluster used to group and separate objects, including events.
Picture a city hall. The API server is the front desk where every form is handed in and filed. The controllers are clerks who check the files and chase up anything that is out of order. The scheduler is the person who assigns each job to a worker. The kubelets are the workers themselves. Events are the memos that clerks and workers attach to files as they go.
Namespaces and Events
Most events belong to a namespace, the same one as the object they describe. If a pod lives in a namespace called shop, its events live there too. This matters when you look for events, because asking for events without naming a namespace shows only those in your current default namespace. A common beginner mistake is to conclude that no events exist, when in fact they are sitting in a different namespace.
4The Anatomy of an Event
Every event carries the same handful of fields, and once you know them you can read any event in seconds.
The Fields That Matter
An event is short, but every part of it has a purpose. Reading events quickly is mostly a matter of knowing where to look, so the table below lists the fields you will meet most often, together with what each one tells you.
| Field | What It Tells You | Why It Helps |
|---|---|---|
| Type | Whether the event is Normal or Warning | Lets you skip routine news and focus on trouble |
| Reason | A short, machine-friendly label such as Scheduled or Failed | Gives you a keyword to search for and group by |
| Message | A human-readable sentence with details | Usually contains the actual cause of a problem |
| Involved Object | The object the event is about, by kind and name | Connects the message to the pod, node, or other object |
| Source | The component that reported it | Shows whether the scheduler, kubelet, or a controller spoke |
| Count | How many times the same thing has happened | Reveals repeated failures rather than one-off blips |
| First and Last Seen | When the event first and most recently occurred | Builds the timeline of the incident |
Reading an Event Like a Sentence
A useful trick is to read the fields together as a sentence. Imagine an event whose type is Warning, whose reason is FailedScheduling, whose involved object is a pod named checkout, whose source is the scheduler, and whose message says that no node has enough memory. Read aloud, it becomes: a warning from the scheduler about the checkout pod, failed scheduling, because no node has enough memory. That single sentence tells you what to do next, which is to look at memory requests and node capacity.
Start with the type, then the reason, then the message. The reason tells you the category of trouble, and the message supplies the specific detail you need to act.
Why Events Reference Objects
The involved object is the heart of an event. It is a pointer, made of the kind of object, its name, its namespace, and a unique identifier. Because of this pointer, the cluster can show you all events for a single pod when you inspect that pod. It is also why an event can become orphaned in interesting ways: if the object is deleted and recreated with the same name, the identifier differs, and the old events refer to a previous life of that name.
5Normal and Warning: The Two Event Types
Kubernetes sorts every event into one of two types, which is the quickest way to separate routine news from real trouble.
Normal Events
A Normal event reports something that went as expected. A pod was scheduled, an image was pulled, a container was created and started, a deployment scaled up. These events are like green lights on a dashboard. You rarely need to act on them, but they are valuable as a timeline because they show the healthy sequence of steps and let you see exactly where the sequence stopped.
Warning Events
A Warning event reports something that went wrong, or something that is likely to cause a problem. A failed image pull, a container that keeps crashing, a probe that keeps failing, a volume that cannot attach, a node running out of disk. Warning events deserve attention, because they are the cluster telling you that its own efforts did not succeed.
Normal Example
A new pod is created. The scheduler reports that it assigned the pod to a node, the kubelet reports that it pulled the image, created the container, and started it. Four short Normal events, and the story is complete and healthy.
Warning Example
The same pod is created, but the image name has a typing mistake. The scheduler still reports success, but the kubelet reports a Warning that the image pull failed, followed by another Warning that it is backing off from trying again.
A car dashboard shows many small lights. Green ones say the headlights are on and the indicator is working. Amber and red ones say the engine is hot or the oil is low. You do not stare at the green lights, but you would be lost without them if you had to prove the car was fine, and you must never ignore the amber ones.
Only two types exist. Older tutorials sometimes hint at others, but in practice you will see only Normal and Warning. There is no Error type, so do not filter for one and conclude that all is well when nothing appears.
Why Only Two?
The simplicity is deliberate. A rich scale of severity levels invites endless debate about which level fits which situation, and produces inconsistent reporting across components. With just two types, every component author needs to answer one question: did this go as planned or not? That keeps the signal clean and lets tools filter on a single field.
6Reasons and Messages: The Vocabulary of Events
The reason is the keyword of an event, and learning the common ones is like learning the first hundred words of a new language.
What a Reason Is
A reason is a short label, written in a compact style with no spaces, that names what happened. It is meant for machines and for quick human scanning. Because reasons are consistent across the cluster, you can search for them, count them, and set alerts on them. A message, by contrast, is free text written for people and may include names, numbers, and details that differ every time.
A Starter Glossary
Scheduled
The scheduler chose a node for the pod.
Pulled
The container image was downloaded, or was already on the node.
Started
The container is now running.
FailedScheduling
No node could accept the pod, often because of resources or rules.
BackOff
Kubernetes is waiting longer between repeated attempts to restart or pull.
Unhealthy
A health check failed for the container.
FailedMount
A storage volume could not be attached or made available.
Evicted
The pod was removed from a node, often because the node ran short of resources.
Reading Messages With Care
The message is where the specifics live. It may name the missing secret, the exact image that could not be found, or the number of nodes that rejected the pod together with the reasons. The wording can be long, and it often ends with useful hints. Read the whole message, not just the beginning, because the most important detail is frequently in the last clause.
When you paste an event into a search engine or a team chat, use the reason word and the key part of the message but leave out names and numbers that are unique to your cluster. You will find far more matching discussions.
A hospital chart has a short diagnosis code at the top and a paragraph of doctor’s notes below. The code lets the hospital group and count cases, while the notes explain this particular patient. The reason is the code, and the message is the notes.
7Who Writes Events?
Several different components report events, and knowing the author helps you decide where to look next.
The Main Reporters
| Reporter | Typical Events | What It Suggests When You See It |
|---|---|---|
| Scheduler | Scheduled, FailedScheduling, Preempted | The question is about placement: capacity, rules, or priorities |
| Kubelet | Pulling, Pulled, Created, Started, Killing, Unhealthy, BackOff, FailedMount | The question is about what happens on one specific node |
| Deployment and ReplicaSet controllers | ScalingReplicaSet, SuccessfulCreate, FailedCreate | The question is about how many copies exist and why |
| Job and CronJob controllers | Completed, BackoffLimitExceeded, SawCompletedJob | The question is about a batch task and its retries |
| Node controller | NodeNotReady, RegisteredNode, RemovingNode | The question is about the health of computers |
| Autoscalers | SuccessfulRescale, FailedGetResourceMetric, TriggeredScaleUp | The question is about automatic growth and shrinkage |
| Storage controllers | ProvisioningFailed, SuccessfulAttachVolume, FailedAttachVolume | The question is about disks and claims |
Why the Source Matters
The source field turns a confusing list into a map. If the scheduler is complaining, you know the pod has not yet reached any computer, so there is no point checking the logs of a container that has never existed. If the kubelet is complaining, you know the pod reached a node and something went wrong locally, so the node, the image registry, or the volume is worth checking. If a controller is complaining, the trouble lies in how copies are being managed.
In a hotel, a complaint from the booking desk means you have a reservation problem, a complaint from housekeeping means the room is not ready, and a complaint from the kitchen means the meal is late. You go to a different person depending on who is complaining. The source of an event points you to the right person.
When reading a list of events, mentally label each with its reporter first. The order of reporters usually mirrors the order of a pod’s life: scheduler, then kubelet, then the health checks, and back to the controllers if the pod is replaced.
Custom Components and Their Events
Clusters are often extended with additional controllers, such as those that manage databases, certificates, or message queues. These extensions usually report their own events, using the same fields and the same two types. The reasons are chosen by their authors, so they are not part of a shared vocabulary, but the messages are meant to be read in the same way. When a certificate controller reports that it failed to obtain a certificate, or a database controller reports that it started a backup, you will find those notes attached to the custom objects they manage.
The habit of reading events transfers directly to these extensions. Describe the custom object, scroll to the events, and read the reason and message. Good extensions treat events as their main way of talking to operators, so learning to read them pays off well beyond the built-in objects.
8The Life of an Event
An event is born in a component, travels through the API server, sits briefly in storage, and then quietly disappears.
From Creation to Disappearance
When a component decides something is worth noting, it hands a small report to a helper often called an event recorder. The recorder tidies it, checks whether it is a repeat of something recently reported, and sends it to the API server. The API server validates the event and stores it in the cluster database, called etcd, like any other object. From then on, anyone with permission can read it.
After a set period, the cluster deletes the event. The default is around one hour, though administrators can change it. This automatic clean-up is important, because a busy cluster produces a huge number of events, and keeping them forever would flood the database that the whole cluster depends on.
flowchart LR
A[Component acts or fails] --> B[Event recorder]
B --> C{Repeat of a recent event?}
C -- Yes --> D[Update count and last seen]
C -- No --> E[Create new event]
D --> F[API server]
E --> F
F --> G[(etcd storage)]
G --> H[Readers: kubectl, tools, exporters]
G --> I[Automatic deletion after about one hour]
The diagram shows the path. The important idea is the fork in the middle: repeated events are merged instead of stored again, which keeps the volume manageable. At the end, two things can happen to an event. Readers may look at it while it lasts, and if nobody has copied it elsewhere, the cluster eventually removes it.
Why Short Lifetimes Make Sense
Events describe the present and the very recent past. An hour-old event about a container starting is rarely interesting a week later. The design assumes that you look at events soon after a problem appears, or that you use a separate system to store them longer. It is an intentional trade-off between usefulness and the health of the database.
Waiting until the next day to investigate a night-time incident. By then the events that explain it may already be gone. If your team cannot always respond within the hour, plan to export events to longer-term storage.
9Events Along a Pod’s Journey
Following one pod from birth to running shows how events line up into a readable story.
The Healthy Story
Let us follow a single new pod. First, a controller notices that a copy is missing and creates the pod. The scheduler picks a node and records that it did so. The kubelet on that node then announces that it is pulling the image. When the download finishes, it records that the image was pulled, then that the container was created, and finally that the container started. If the pod has health checks, no event is recorded while they pass, because success is silent. That silence is a sign of health.
Created by a controller
A replica controller reports that it created a pod to reach the desired number of copies.
Scheduled
The scheduler reports which node received the pod.
Pulling and Pulled
The kubelet reports the start and the end of the image download.
Created and Started
The kubelet reports that the container exists and is now running.
sequenceDiagram
participant C as Controller
participant S as Scheduler
participant K as Kubelet
participant A as API Server
C->>A: Create pod (event: SuccessfulCreate)
S->>A: Bind pod to node (event: Scheduled)
K->>A: Pulling image (event: Pulling)
K->>A: Image ready (event: Pulled)
K->>A: Container made (event: Created)
K->>A: Container running (event: Started)
The Broken Story
Now imagine the same journey with a fault. If the story stops after the scheduler’s note, the trouble is on the node. If it stops before the scheduler’s note and a warning appears instead, the trouble is placement. If it reaches Started but is followed by repeated Unhealthy and Killing events, the application itself is failing its checks. The place where the story stops or turns sour is the place to investigate.
Consider a relay race. Each runner hands the baton to the next. If you can see that the baton reached the third runner but never reached the fourth, you know exactly where to look. Events are the record of each handover, so the missing handover is the clue.
Write down the expected sequence for a pod in your own words. Whenever a pod misbehaves, compare its actual events with that mental checklist and find the first step that is missing or failing.
Why Timestamps Deserve Your Attention
Every event carries times, and those times are your compass. The first seen time tells you when a problem began, and the last seen time tells you whether it is still going on. When you compare these times with the moment a release started, a configuration change was applied, or a user first complained, you can often connect cause and effect within seconds. An event that began exactly when a new version was rolled out points at the release. An event that began at a quiet hour with no changes points at the environment, such as a node or a storage system.
Be careful with clocks and time zones. Cluster components record times in a consistent standard, but the tools and dashboards you use may show them in your local zone. When you share a timeline with colleagues in other regions, agree on one zone to avoid confusion. A one-hour mismatch can make you blame the wrong change and lose valuable minutes during an incident.
Write the key times of an incident on a shared page as you learn them: the first warning, the change that preceded it, the moment of the fix. This simple list becomes the backbone of a calm review afterwards.
10Reading Events With Everyday Tools
You do not need special software to see events, because the standard command line tool already offers two friendly ways.
The Describe View
The most beginner-friendly way to see events is the describe view of an object. When you ask for a description of a pod, the tool prints its settings and, at the very bottom, a section called Events. That section lists only the events related to that pod, in time order. It is the fastest way to answer the question of why one specific pod is unhappy, and it is where most investigations begin.
Because the events sit at the bottom, people who read only the top of the output miss them. Get into the habit of scrolling to the end first. The settings above rarely explain a failure, while the events below usually do.
The Cluster-Wide List
The second way is to ask the cluster for its events directly. This produces a table of events across a whole namespace, or across every namespace if you ask for that. It is useful when you do not yet know which object is at fault, or when a single problem touches several objects, such as a deployment, its replica set, and its pods all reporting trouble at once.
| Approach | Best For | Limitation |
|---|---|---|
| Describe view of one object | Understanding a single pod, node, or deployment | Shows only that object’s events |
| Event list for a namespace | Scanning a whole application area for trouble | Can be long and noisy in a busy namespace |
| Event list across all namespaces | Hunting for a problem when you do not know where it is | Requires wide permissions and produces the most noise |
| Watching events live | Seeing what happens while you make a change | Only shows what happens after you start watching |
The describe view is like reading the medical notes for one patient. The namespace list is like reading the ward’s daily log. The all-namespace list is like reading the hospital’s daily log. You choose the level of detail that matches how much you already know.
A plain event list is not always sorted by time. Beginners sometimes read the list from top to bottom and draw the wrong conclusion about the order of events. Ask for the list to be sorted by time so that the story reads naturally.
11Filtering, Sorting, and Watching
A busy cluster produces many events, so learning to narrow them down is the skill that saves the most time.
Sorting by Time
Sorting by the last seen time puts the newest events at the bottom, where your eyes naturally end up. This makes a timeline easy to read. Without sorting, related events may appear far apart, and the cause of a problem may look like it came after its effect.
Filtering by Object, Type, and Reason
The event list can be narrowed using field selectors. You can keep only events about a certain object by naming it, keep only warnings by naming the type, or keep only events with a particular reason. Filtering by type is the single most useful trick: showing only warnings removes the routine chatter and leaves the handful of lines that need attention.
By Type
Show only Warning events to remove routine messages.
By Object
Show only events for one named pod, node, or deployment.
By Reason
Show only one kind of happening, such as every failed scheduling attempt.
By Namespace
Limit the view to one application area, or widen it to the whole cluster.
Watching in Real Time
Watching keeps the command open and prints new events as they arrive. This is ideal when you are making a change and want immediate feedback: roll out a new version and watch the events show old copies being stopped and new copies being created. Many engineers keep a watch open in a second window during every release, because it shows problems in seconds.
Filtering is like searching your email for one sender, and watching is like leaving the inbox open on screen while you wait for an important reply. Both save you from reading everything.
During a rollout, open one window that watches events and another that watches pods. The pod window shows what changed, and the event window shows why.
A Practical Reading Routine for Busy Namespaces
In a busy namespace, hundreds of events may scroll past in minutes, and reading them all is impossible. A practical routine is to filter to warnings, sort by time, and then scan the reasons rather than the messages. Group similar reasons in your head: several failed scheduling lines mean one placement problem, and several unhealthy lines mean one probe problem. Only after you have identified the group that looks most recent or most frequent should you read the detailed messages.
This scanning approach protects your attention. Instead of being pulled into every detail, you form a quick picture of how many different problems exist, which one began first, and which one is still active. Then you deal with them one at a time, starting with the earliest, since later problems are often consequences of the earliest one.
12Deduplication, Counts, and Rate Limiting
A crashing container could generate thousands of identical events, so the cluster merges repeats and limits the flow.
Why Repeats Are Merged
Suppose a container fails its health check every ten seconds. Storing a separate event for every failure would produce hundreds of nearly identical records per hour for a single pod, and a large cluster would drown in them. To prevent this, the event recorder recognizes repeats and instead updates the existing event, raising its count and refreshing its last seen time.
This is why you often see a line saying a warning happened forty times over ten minutes rather than forty lines. The count is a valuable signal. A count of one may be a harmless blip. A count of forty means the problem is persistent and demands a fix.
A doorbell that keeps ringing does not need forty separate notes in a diary. One note saying the doorbell rang forty times since noon tells you the same thing and tells you it is urgent. The count carries the urgency.
Rate Limiting
Beyond merging, components also limit how quickly they may send events about the same object. If something goes badly wrong, a component may be allowed a small burst of events and then only a slow trickle afterwards. This protects the API server from being overwhelmed by a storm of reports during an outage, which is exactly when it needs to stay responsive.
flowchart TD
A[Component reports something] --> B{Same event seen recently?}
B -- Yes --> C[Increase count and refresh last seen]
B -- No --> D{Within allowed rate?}
D -- Yes --> E[Create new event]
D -- No --> F[Drop the report quietly]
C --> G[API server]
E --> G
Because reports can be merged or dropped, events are not a perfect audit trail. Do not use them to prove that something did not happen. Use them as strong hints, and confirm with logs and metrics when accuracy matters.
Reading Counts Wisely
Always read the count together with the first and last seen times. A count of fifty spread over two days is very different from a count of fifty within two minutes. The first suggests an occasional annoyance, and the second suggests a crash loop that is happening right now.
13The Two Event Interfaces
Kubernetes offers an older and a newer way of representing events, and it helps to know that both exist.
The Older Core Interface
The original events are part of the core group of the cluster interface. They use fields such as involved object, source, first timestamp, last timestamp, and count. Most tutorials, tools, and habits are built around this shape, and the standard command line tool shows events using it. It is the version you will meet most often.
The Newer Events Interface
A newer, dedicated events group was introduced to improve scalability and to make events more structured. It renames several fields, for example using regarding instead of involved object and reporting controller instead of source. It also introduces the idea of a series, in which many similar events are compressed into one record that keeps a count and a last observed time. This reduces the load that events place on the cluster.
| Idea | Older Core Interface | Newer Events Interface |
|---|---|---|
| Object the event is about | Involved object | Regarding |
| Who reported it | Source | Reporting controller and instance |
| Repeat handling | Count with first and last timestamps | Series with a count and last observed time |
| Message field | Message | Note |
| Extra detail | Limited | Action and related object fields |
Think of two versions of a paper form. The old form has boxes for who, what, and when. The new form has the same boxes with clearer labels and an extra box for what was done about it. Both forms end up in the same filing cabinet, and clerks can read either.
What This Means for You
For most daily work, you do not need to choose. Cluster tools present both kinds in a friendly way, and components that report events use whichever interface they support. The practical lesson is to expect slightly different field names in different tools and documents, and to recognize that they describe the same idea. If you write your own tools that read events, check which interface your cluster version supports and prefer the newer one where it is available.
Support and default behaviour can vary between Kubernetes versions. When you depend on a specific field, confirm it in the documentation for the version your cluster runs.
Events Across Several Objects at Once
Real problems rarely touch a single object. A broken image tag, for example, creates trouble for a pod, but the replica set above it also reports that its pods are not becoming ready, and the deployment above that reports that a rollout has stopped making progress. Each object records its own events, so the same root cause appears at several levels, described in slightly different words. Beginners sometimes read these as separate problems and chase each one. Experienced engineers recognize them as one chain and look for the lowest link, which is usually the pod or the node.
A helpful method is to read events from the bottom of the chain upward. Start with the pod, because it is where the actual work happens, then move to the replica set and the deployment to understand the effect on the wider application. This order keeps you close to the cause and avoids being distracted by the symptoms that ripple upward.
When a factory line stops, the packaging department, the shipping department, and the sales team all send complaints. They describe the same failure from different positions. The wise supervisor walks to the start of the line, where the first machine stopped, instead of answering each complaint separately.
14Scheduling Events: When a Pod Cannot Find a Home
The scheduler speaks up mostly when it cannot place a pod, and its messages are some of the most helpful in the whole system.
The Failed Scheduling Warning
When a pod stays in a waiting state and never starts, the scheduler usually leaves a FailedScheduling warning. The message is remarkably informative. It often says something like: zero out of five nodes are available, two have insufficient memory, two have a taint the pod does not tolerate, and one does not match the pod’s node selector. Each phrase points to a concrete cause, and the counts add up to the total number of nodes.
Insufficient Resources
The pod asks for more processor or memory than any node has free.
Taints Not Tolerated
Nodes are reserved for special work and the pod lacks permission to land there.
Selector Mismatch
The pod demands a node label that no node carries.
Affinity Rules
Rules about staying near or away from other pods cannot be satisfied.
Unbound Volume Claims
The pod needs a storage claim that has not yet been fulfilled.
A travel agent trying to book a family of six into a hotel might report that two hotels are full, one does not allow pets, and one has no adjoining rooms. Each reason is specific and actionable. The scheduler’s message is exactly that kind of report.
Preemption Events
When a high-priority pod cannot fit, the scheduler may decide to remove lower-priority pods to make room. It records this with events on both sides: a note on the victim that it was preempted, and a note on the important pod that a node has been nominated for it. If you see pods disappearing with a preempted reason, priorities are at work rather than a fault.
Read each phrase in a scheduling message as a to-do item. Insufficient memory means reduce the request or add capacity. A taint means add a toleration or use a different node group. A selector mismatch means fix the label.
15Image and Container Events
Once a pod reaches a node, the most common trouble is getting the container image and starting the container.
Image Pull Problems
Two famous reasons appear again and again. The first, often shown as ErrImagePull, means the node tried to download the image and failed. The second, ImagePullBackOff, means the node has failed so many times that it is now waiting longer between attempts. They are two stages of the same problem. The causes are usually simple: a misspelled image name, a tag that does not exist, a private registry that needs credentials, or a network path that is blocked.
Crash Loops
A container that starts and then exits again and again is said to be in a crash loop. The kubelet keeps restarting it, but waits longer each time, and it records a BackOff warning. The event tells you that the restart cycle exists. It does not tell you why the application keeps exiting, because that answer lies in the application’s own logs and its exit code.
| Event Reason | Meaning | Where to Look Next |
|---|---|---|
| ErrImagePull | The first download attempt failed | Image name, tag, registry credentials, network |
| ImagePullBackOff | Repeated failures, waiting longer between tries | Same as above, and the registry status |
| BackOff | The container keeps exiting and is being restarted slowly | Application logs and exit code |
| Failed | A container could not be created or started | Settings such as commands, mounts, and permissions |
| Killing | The kubelet is stopping a container | Health checks, updates, or resource limits |
Imagine sending a courier to collect a package. If the address is wrong, or the shop requires a membership card the courier lacks, the courier returns empty-handed and waits longer before each retry. That is an image pull failure. A crash loop is more like a machine that turns on and immediately switches itself off, again and again.
A crash loop event confirms the symptom but not the cause. Always follow it with the container’s logs, especially those of the previous run, because the current run may have just started and have nothing to say yet.
Real Situation
A team pushes a new version with a tag typed as version one point tow instead of two. Every new pod reports ErrImagePull and then ImagePullBackOff. The event message names the exact image, so the typing mistake is visible within a minute of looking at the pod’s events.
16Health Check Events
Probes are small tests that Kubernetes runs against your application, and their failures show up as events.
The Three Kinds of Probes
Liveness
Asks whether the container is still alive. Failure leads to a restart.
Readiness
Asks whether the container is ready for traffic. Failure removes it from load balancing without restarting it.
Startup
Gives slow applications extra time to boot before the other probes begin.
What Failures Look Like
When a probe fails, the kubelet records an Unhealthy warning and quotes the outcome, such as a connection being refused or an unexpected status code. A repeated liveness failure is followed by a Killing event, because the kubelet decides the container is beyond help and restarts it. A readiness failure produces Unhealthy warnings but no restart, so the pod stays running while being kept out of service.
A liveness check is like asking whether a person is breathing. A readiness check is like asking whether the shop assistant is ready to serve customers. A startup check is like giving someone a few minutes to get their coat off after arriving. A person may be alive but not ready, and the responses differ.
Many probe failures come from tests that are too strict for a slow-starting application. If events show Unhealthy warnings right after start, consider giving the application more time rather than assuming it is broken.
An overly aggressive liveness check can turn a slow moment into a restart storm, in which healthy but busy containers are killed repeatedly. The events will show the pattern: Unhealthy, Killing, Started, and again.
Resource Limits and Killed Containers
Containers may be given limits on memory and processor time. A container that exceeds its memory limit is stopped by the system, and the reason is recorded as an out-of-memory kill in the container’s last state. This is visible in the description of the pod, and it is often followed by a restart event. The pattern looks like a crash loop, but the cause is different, and the fix is different too: raise the limit, reduce the application’s memory use, or investigate a leak.
Processor limits behave more gently. A container that wants more processor time than its limit allows is slowed down rather than killed, so no dramatic event appears. This is why slow applications sometimes have a clean event history. If a service is sluggish but the events are quiet, look at metrics for throttling instead of hunting for a warning that does not exist.
Events record actions and failures, not slowness. A pod can be alive, ready, and event-free while responding painfully slowly. Pair events with metrics whenever performance is the complaint.
17Volume and Storage Events
Storage problems keep pods waiting, and events are the best place to learn why.
Claims and Provisioning
Applications ask for storage using a claim, which is a request for a disk of a certain size and kind. A storage provisioner then creates the disk. If it cannot, a ProvisioningFailed warning appears on the claim, and the message often names the missing storage class or an exhausted quota. A pod that depends on such a claim will wait, and the scheduler will report that the claim is unbound.
Attaching and Mounting
Once a disk exists, it must be attached to the node and mounted into the container. FailedAttachVolume warns that the attach step failed, sometimes because the disk is still attached to another node after a crash. FailedMount warns that the mount step failed, sometimes because a referenced secret or configuration map does not exist. Missing configuration is a very common cause and is easy to fix once the event names the missing item.
Claim is created
The application requests storage and the claim waits to be matched or provisioned.
Disk is provisioned
A provisioner creates the disk, or reports ProvisioningFailed.
Disk is attached
The disk is connected to the chosen node, or FailedAttachVolume appears.
Volume is mounted
The kubelet makes the disk visible to the container, or reports FailedMount.
Storage is like renting a storage locker. First you request one, then the company prepares it, then it is assigned to your building, and finally you receive the key. A delay at any of the four steps leaves you standing outside the locker, and each step has its own kind of note explaining the delay.
When a pod is stuck waiting for storage, check the events of the pod, then of the claim, then of the node. The problem often reveals itself at exactly one link of that chain.
18Node Events and Evictions
Computers in the cluster have their own troubles, and node events explain when and why pods are forced to move.
Node Health Events
Each node reports its condition to the cluster regularly. If a node stops reporting, a node controller marks it as not ready and records an event. Other events describe a node registering, becoming ready again, or being removed. When a node is running short of a resource such as memory, disk space, or process slots, it reports a pressure condition, and events name it. These messages are early warnings, because pressure usually arrives before pods start being removed.
Eviction Events
When a node is under serious pressure, the kubelet protects the computer by evicting pods. It chooses the pods that use more than they requested or that have low priority. An Evicted event names the pod and the resource that ran short, for example memory or ephemeral storage. The pod is not repaired in place. A controller notices that a copy is missing and creates a replacement, usually on a healthier node.
NodeNotReady
The node stopped reporting or reported that it is unhealthy.
NodeHasDiskPressure
The node is running out of disk space and may start clearing space.
NodeHasInsufficientMemory
Memory is low and pods may be evicted soon.
Evicted
A pod was removed to protect the node.
ImageGCFailed
The node could not clear old images to free space.
A lifeboat that is too heavy must send some passengers to another boat. The captain first announces that the boat is getting heavy, which is the pressure warning. Then some passengers are asked to leave, which is the eviction, and they are found seats elsewhere, which is the replacement pod.
Set honest resource requests for your pods. Pods that ask for too little look small to the scheduler, get packed tightly, and become the first victims when a node gets crowded.
An evicted pod is different from a container killed for exceeding its memory limit. The first is a decision by the node to protect itself, and the second is a strict limit on one container. The events use different words, so read them closely.
19Workload Controller Events
Deployments, jobs, and autoscalers also speak, and their events explain how many copies exist and why.
Deployments and Replica Sets
A deployment manages copies of an application through an intermediate object called a replica set. When you release a new version, the deployment creates a new replica set and scales it up while scaling the old one down. Each of these steps is recorded as a ScalingReplicaSet event, so a rollout leaves a clear trail of the old count going down and the new count going up. If pod creation fails, for instance because a quota is exceeded, the replica set records a FailedCreate warning and explains the reason.
Jobs and Scheduled Jobs
A job runs a task until it succeeds. Its events report pods being created, the job completing, or the job giving up after too many failures with a BackoffLimitExceeded warning. A scheduled job creates jobs at chosen times and reports each creation, as well as any time it had to skip because a previous job was still running.
Autoscalers
The horizontal pod autoscaler changes the number of copies based on measured load. Its events say that it rescaled from one count to another and give the metric that triggered the change. If it cannot read the metric, it reports a warning such as FailedGetResourceMetric, which usually means the metrics service is missing or the pods have no resource requests. Cluster-level autoscalers add and remove nodes and report events such as a scale-up being triggered because pods could not be scheduled.
| Controller | Sample Event | What You Learn |
|---|---|---|
| Deployment | ScalingReplicaSet | How a rollout is progressing |
| ReplicaSet | SuccessfulCreate or FailedCreate | Whether new pods could be made |
| Job | Completed or BackoffLimitExceeded | Whether the batch task finished or gave up |
| Horizontal autoscaler | SuccessfulRescale | Why the copy count changed |
| Cluster autoscaler | TriggeredScaleUp | Why a new node was requested |
A store manager adjusts the number of cashiers according to the queue length, and writes in a log each time a cashier is added or sent home, together with the reason. The autoscaler events are that log, and they answer the question of why the number of copies changed while nobody was looking.
Rollout Story
A team updates a deployment from six copies of the old version to six of the new. The events show the new replica set scaling to two, the old scaling to five, the new to four, and so on, until the old reaches zero. If the new pods fail their readiness checks, the sequence stalls, and the events plus the pod warnings show exactly why.
Quota and Policy Events
Clusters shared by many teams often use quotas to limit how much each namespace may consume, and policies to enforce rules such as which images are allowed. When a request violates a quota or a policy, the resulting failure is reported through events on the controller that tried to create the pod. A replica set may report that it could not create a pod because the namespace has exceeded its memory quota, and the message names the amount requested and the amount remaining.
These events are a gift to developers who do not control the cluster. They explain, in the developer’s own namespace, that the obstacle is an administrative limit rather than a bug in the application. The developer can then ask for a higher quota or reduce their requests, instead of spending hours debugging code that was never at fault.
Quota Example
A team scales an application from four to ten copies and only six appear. The replica set events report failed creation for the remaining four because the namespace memory quota is exhausted. Within a minute the team knows to request more quota or lower the memory each copy asks for.
20Events, Logs, and Metrics Compared
Three kinds of observation work together, and each one answers a different question.
Three Different Questions
Events explain what the platform did or decided. Logs contain the detailed words an application writes while it runs. Metrics are numbers measured over time, such as how many requests per second arrive or how much memory is in use. A beginner may try to answer every question with one of them, and get frustrated. A skilled engineer moves between all three, using each where it is strongest.
| Aspect | Events | Logs | Metrics |
|---|---|---|---|
| Main question | What did Kubernetes do? | What did the application say? | How much and how fast? |
| Written by | Cluster components | Your application | Cluster and application exporters |
| Size | Short summaries | Can be very large | Compact numbers |
| Kept by default | About one hour | Only as long as the container exists | Depends on the monitoring system |
| Best for | Scheduling, starting, restarting, and volume problems | Application errors and business detail | Trends, capacity, and alerts |
flowchart LR
P[A problem is reported] --> E[Check events: what did the platform do?]
E --> L[Check logs: what did the application say?]
L --> M[Check metrics: what changed over time?]
M --> R[Form a cause and fix it]
When a patient arrives at a clinic, the nurse checks the chart of what treatments were given, which is like events. The doctor listens to the patient describing symptoms, which is like logs. The machines record temperature and heart rate over time, which is like metrics. No single source gives the full picture, but together they make a diagnosis.
For a pod that will not run, look at events first, because the failure is often before the application has produced any logs. For a pod that runs but misbehaves, look at logs first and use events to check for restarts.
21Keeping Events Longer
Because the cluster forgets events quickly, teams that care about history copy them elsewhere.
Why Retention Matters
Imagine a pod that fails every night at three in the morning. When you arrive at nine, the events that explain the failure have already expired. Even during working hours, a slow problem that builds over several hours may leave no trace by the time you notice it. Long-term retention turns the short-lived notepad into a permanent record.
Common Approaches
Event Exporter
A small program watches events and forwards each one to a logging or search system.
Log Agent Collection
The existing log collection agents are configured to gather events along with container logs.
Monitoring Integration
Events are converted into counters or annotations that appear on dashboards next to metrics.
Longer Cluster Retention
Administrators raise the built-in lifetime, at the cost of more storage load on the cluster database.
A whiteboard in an office gets wiped every evening. If the team wants to keep the ideas, someone takes a photo before cleaning. An event exporter is that photographer. It takes a picture of each event and stores it in a safe album, so the wiped whiteboard is no longer a loss.
Raising the built-in lifetime looks easy but places extra weight on the cluster database, which everything depends on. Copying events out of the cluster is safer and gives you better search, dashboards, and alerting as a bonus.
What to Store With Each Event
When exporting, keep the cluster name, namespace, object kind and name, reason, type, message, count, and timestamps. If you run several clusters, the cluster name is vital, because otherwise identical reasons from different clusters become impossible to separate in a shared store.
Choosing What to Keep and For How Long
Not every event deserves the same retention. Warnings are far more valuable than routine notices, so some teams keep warnings for months and keep Normal events for only a few days. This reduces storage costs while preserving the evidence that matters in reviews. The right split depends on your industry and your habits, but the principle holds: keep what helps you learn from failures, and be more relaxed about the routine.
Also think about who will use the stored events. Engineers on call want fast searches by namespace and object. Managers preparing a review want counts by reason over a month. Security teams may want to see unusual patterns of pod creation. Designing the store with these readers in mind makes the effort worthwhile, because the same data then serves several needs.
22Alerting and Monitoring With Events
Once events are collected, they can wake the right person at the right moment.
Which Events Deserve Alerts
Alerting on every warning would flood your team with noise and train them to ignore alerts. A better approach is to pick a small list of reasons that reliably indicate real problems and to alert only on those, usually with a threshold on the count or the rate. For instance, a burst of failed scheduling events may suggest that the cluster has run out of room, while a handful of image pull failures in one namespace after a release may point at a bad tag.
Capacity Alert
Alert when many FailedScheduling warnings mention insufficient resources within a short time. This is an early warning that the cluster needs more nodes, and it arrives before users notice slowness.
Release Alert
Alert when ImagePullBackOff or repeated BackOff warnings appear right after a deployment. This catches broken releases within minutes.
Node Alert
Alert on NodeNotReady and eviction events, because they mean computers are failing or overloaded and applications may be moving.
Storage Alert
Alert on ProvisioningFailed and FailedAttachVolume, which stop stateful applications from starting at all.
A smoke detector that beeps every time you make toast will soon be disconnected. A good detector stays quiet for normal cooking and only sounds for real smoke. Good event alerts work the same way, sounding only for the events that mean genuine trouble.
Combining Events With Metrics
Events and metrics complement each other in alerts. A metric may say that restarts increased, and an event tells you the reason behind the restarts. Many teams link their alert message to a dashboard that shows the recent events for the affected object, so that the responder sees the reason straight away without running any commands.
Begin with three or four alerts on high-value reasons, watch how often they fire, and tune the thresholds. Add more only when a past incident shows that an important signal was missed.
23Security and Access to Events
Events are informative, so they need sensible access rules and careful handling of what they may reveal.
Who May Read Events
Kubernetes controls access using roles. Reading events is a permission like any other, and it can be granted for one namespace or for the whole cluster. Developers often need to read events in their own namespaces to debug their applications, and this is a reasonable permission to grant. Access to events across all namespaces should be limited to platform operators, since events can reveal names and structure of other teams’ applications.
Who May Write Events
Creating events is also a permission. Cluster components have it by design. Ordinary users and applications rarely need it. Restrict it, because a person who can write events could create misleading records, hiding a real problem in noise or inventing a false alarm.
What Events May Reveal
Event messages sometimes include names of images, registries, secrets, volumes, and internal addresses. They should never include secret values, but they can point to the existence and names of sensitive objects. When exporting events to a shared logging system, apply the same access rules and retention rules you use for other operational data.
Read Narrowly
Grant read access per namespace, and cluster-wide only to operators.
Write Rarely
Limit event creation to cluster components and trusted controllers.
Protect Exports
Secure the systems that receive exported events as carefully as the cluster.
Review Messages
If your own tools create events, make sure their messages never contain sensitive data.
The notice board in an office may show which meeting rooms are booked and by whom. It contains no confidential documents, but it still reveals who meets whom. So the office limits who can add notices and who can read the board in sensitive departments.
Because events are text written by components, treat messages as untrusted input when they flow into other tools. Do not feed them into systems that might interpret them as commands.
Events in Multi-Team Clusters
In a cluster shared by many teams, events help each team see its own world without stepping on others. Each team reads events in its own namespaces and sees only what concerns its applications. Platform operators, meanwhile, read across namespaces to spot patterns that no single team could see, such as one node causing evictions for several teams. Designing the access rules around this split respects privacy and still gives operators the wide view they need.
Naming conventions help here too. When namespaces and objects have clear, consistent names, the events that mention them are easier to understand at a glance, and exported events are easier to group by team, by environment, or by application. Good naming is an inexpensive way to make every event more useful.
24A Repeatable Troubleshooting Workflow
Following the same steps every time turns a stressful outage into a calm investigation.
State the symptom
Write one sentence: which application, which namespace, what is wrong, and since when.
Find the object
Identify the pod, deployment, or node that is the center of the trouble.
Read its events
Look at the describe view, sorted by time, and note the first warning.
Widen the view
Check events of related objects: the controller above, the node below, and any claims or secrets involved.
Confirm with logs and metrics
Use them to verify the cause, especially for crash loops and slow degradation.
Fix, then watch
Make one change and watch events live to confirm that the healthy sequence returns.
flowchart TD
A[Pod not working] --> B{Any events at all?}
B -- No --> C[Check namespace, and whether events expired]
B -- Yes --> D{Stopped before Scheduled?}
D -- Yes --> E[Placement problem: resources, taints, selectors, claims]
D -- No --> F{Stopped at Pulling or Pulled?}
F -- Yes --> G[Image problem: name, tag, credentials, network]
F -- No --> H{Unhealthy or BackOff repeating?}
H -- Yes --> I[Application or probe problem: check logs]
H -- No --> J[Check node and volume events]
A car mechanic follows a fixed routine: check fuel, check battery, check spark, check the engine noise. The routine prevents jumping to a favourite theory. The event workflow works like that routine, moving from placement to image to health, in the order that things happen to a pod.
If no events appear, do not assume nothing happened. Check that you are in the correct namespace, that the object is the one you think it is, and that the events have not simply expired after their short lifetime.
25Advantages and Trade-offs of Events
Events are extremely useful, but they have limits that every engineer should understand before relying on them.
Advantages
- Built in to every cluster, so no extra software is needed to start using them
- Attached to the exact object they describe, which makes lookup natural
- Written by the components that made the decision, so the explanation is first-hand
- Short and readable, with reasons that are easy to search and group
- Ideal for the early stages of a pod’s life, before any application logs exist
- Merged when repeated, so a noisy problem shows a count instead of a flood
Disadvantages / Trade-offs
- Short lifetime, usually about one hour, so history disappears quickly
- Not a complete audit trail, since reports may be merged or dropped
- Messages vary in quality between components and versions
- Nothing about the application’s own behaviour, which needs logs
- Long-term use requires extra tooling for export, search, and alerting
Weighing the Balance
The trade-offs are not flaws so much as design choices. Events are deliberately light, short-lived, and approximate, because a heavier design would burden the cluster. The correct response is not to complain about the limits but to work with them: read events early, export them if you need history, and confirm important findings with other signals.
A sticky note on a fridge is perfect for a quick message and useless as a legal record. You would not ask it to be both. Events are the sticky notes of the cluster: instantly visible and very handy, but not meant to be your archive.
When Events Are Enough and When They Are Not
Events are enough when the question concerns placement, image downloads, container starts, health checks, volumes, and the behaviour of controllers. In these areas, the cluster itself does the work and reports on it faithfully. Events are not enough when the question concerns what your code is doing, how fast it responds, how many users are affected, or whether the data it produces is correct. For those, you need logs, metrics, and tracing, and events can only point you towards the right object to examine.
Knowing this boundary keeps expectations realistic. A team that expects events to explain every slow request will be disappointed, and a team that ignores events will waste hours on problems the cluster has already explained in a single line.
26Best Practices and Common Mistakes
A handful of habits separate teams who use events well from teams who fight the same problems repeatedly.
Habits Worth Building
Scroll to the Bottom
Always read the events section of a describe view before anything else.
Sort by Time
Make timelines read in order so cause and effect are clear.
Watch During Releases
Keep a live event window open whenever you change something.
Export Early
Set up retention before the first incident, not after it.
Alert on Few Reasons
Choose the reasons that signal real trouble and tune their thresholds.
Read Counts With Times
Interpret persistence and urgency from counts and timestamps together.
Problem
The team investigates outages the next morning and finds that events have already expired.
Why It’s Harmful
The best evidence of what the cluster did is lost, so the team guesses at causes and repeats the same outage later.
Correct Approach
Export events to a durable store from the beginning and give responders a dashboard that shows recent events for any object.
Problem
Engineers read only the top of a describe view and search the application’s logs for a pod that never started.
Why It’s Harmful
The container never ran, so there are no logs. Time is wasted looking in the wrong place while the answer waits in the events at the bottom.
Correct Approach
Read events first for any pod that is not running, and move to logs only after the container has actually started.
Problem
The team sends an alert for every warning event in the cluster.
Why It’s Harmful
Alert fatigue sets in quickly. People mute the channel, and a genuine emergency goes unnoticed among the harmless chatter.
Correct Approach
Select a short list of high-value reasons, add sensible thresholds, and review them after every incident.
Problem
The team treats an absent event as proof that nothing happened.
Why It’s Harmful
Events can be merged, rate limited, or expired, so their absence proves little. A wrong conclusion here can hide a real fault.
Correct Approach
Treat events as strong hints and confirm important facts through logs, metrics, and the state of the objects themselves.
Forgetting the namespace is perhaps the most common mistake of all. If a list of events looks empty, check the namespace before doing anything else.
27Real-World Examples and an Adoption Roadmap
Events shine in ordinary situations that every team meets sooner or later.
Situations Where Events Save the Day
The Release That Stalled
An online shop deploys a new version before a sale. The rollout stops halfway. A glance at the events shows readiness probe failures on the new pods, caused by a slow database connection at startup. The team extends the startup allowance and the rollout completes in minutes.
The Cluster That Ran Out of Room
A media company launches a campaign and traffic grows. New pods stay waiting. Failed scheduling events across the namespace mention insufficient memory on every node. The operators add nodes, and the alert rule based on those events becomes a permanent part of their monitoring.
The Mysterious Restarts
A payments team sees pods restarting overnight. Exported events reveal evictions on one node group, always around the time a batch job runs and consumes memory. They raise the memory requests of the batch job and separate it onto its own nodes.
The Missing Secret
A new service refuses to start. The events show a FailedMount warning naming a secret that was forgotten in the new namespace. One missing object is created, and the pod starts on its next attempt.
A Gentle Adoption Roadmap
Learn to read
Train everyone to open the events section first and to know the common reasons.
Grant sensible access
Let developers read events in their own namespaces and operators across the cluster.
Export and retain
Send events to a searchable store with cluster and namespace labels.
Build dashboards
Show recent warnings next to restarts, resources, and rollouts.
Add targeted alerts
Alert on a few reasons that indicate real trouble, then refine.
Review after incidents
Ask which event would have warned you sooner, and turn the answer into a rule or a dashboard panel.
flowchart LR
A[Learn to read events] --> B[Grant access]
B --> C[Export and retain]
C --> D[Dashboards]
D --> E[Targeted alerts]
E --> F[Post-incident review]
F --> C
Learning to use events is like learning to read a car’s dashboard. First you learn what the lights mean, then you add a service history, and later you schedule reminders. Each step makes the next breakdown less of a surprise.
28Frequently Asked Questions
Short answers to the questions beginners ask most often about events.
By default about one hour, although administrators can change the lifetime. Because of this short window, teams that need history export events to a separate store.
The most common reasons are that you are looking in the wrong namespace, that the pod is so old that its events have expired, or that the pod has been running smoothly and nothing notable has happened recently. Check the namespace first.
No. Events are short notes written by Kubernetes components about what they did to an object. Logs are the detailed output written by your own application. You often need both, and events are usually the better first stop for a pod that never started.
Normal describes something that went as planned, and Warning describes something that failed or is likely to cause trouble. There are only these two types.
It shows how many times the same event was seen. A high count over a short period means an ongoing problem, while a low count spread over a long period suggests an occasional blip.
Yes, tools and controllers that you write can report events about the objects they manage, provided they have permission. Keep messages short, useful, and free of sensitive information.
They are two stages of one problem. The first means a download attempt failed, and the second means the node is waiting longer between repeated attempts. The fix is the same for both: correct the image name, tag, credentials, or network path.
No. It only confirms that the container keeps exiting and being restarted. The reason lives in the application logs, particularly the logs of the previous run, and in the container’s exit code.
Not reliably. Events can be merged, rate limited, and deleted, so they are not a complete record. For auditing, use the cluster’s dedicated audit logging.
No. Choose a short list of reasons that indicate real trouble, such as failed scheduling after a release, node not ready, or volume failures, and add thresholds so that harmless blips do not wake anyone.
Kubernetes has an older core events interface and a newer events interface. They describe the same ideas with different names, such as involved object versus regarding. Tools present both in a familiar way.
Open the describe view of the pod and scroll to the events section at the bottom. It lists the events for that pod in time order, which is usually all you need to begin.
29Summary and Key Takeaways
Kubernetes events are the short, timestamped notes that the cluster writes about its own actions. They are attached to the objects they describe, sorted into Normal and Warning types, labelled with reasons, and explained by messages. They are merged when repeated, stored only briefly, and readable with everyday tools. Used well, they turn a silent, mysterious platform into one that explains itself, and they point you to the right place in the first minutes of an investigation.
The best teams learn the common reasons, read events before logs for pods that will not start, watch events during releases, export them for history, and alert on a small set of meaningful reasons. They also remember the limits: events are hints rather than proof, and they vanish quickly if nobody copies them.
Key Takeaways
- Events explain platform actions — they tell you what the scheduler, kubelet, and controllers did or failed to do for an object.
- Two types only — Normal means as planned, and Warning means trouble, so filter on Warning first.
- Read the sequence — a healthy pod shows scheduling, pulling, creating, and starting, and the point where the story stops is where to investigate.
- Counts show persistence — repeated events are merged, so read the count together with the first and last seen times.
- Events are short-lived — they vanish after about an hour, so export them to keep history and to build dashboards and alerts.
- Combine signals — use events for what the platform did, logs for what the application said, and metrics for how things changed over time.
- Secure and tune — limit who can read and write events, and alert only on the reasons that signal real problems.