How to check if Kubernetes cluster is running fine
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Introduction
Checking whether a Kubernetes cluster is running fine is not one command. A healthy cluster means the control plane is reachable, nodes are ready, core system pods are stable, and normal workloads can schedule and serve traffic. A practical health check is therefore a short sequence of targeted checks rather than a vague "cluster looks up" assumption.
Start with API Reachability and Node Health
First confirm that kubectl can talk to the cluster and that nodes are ready.
A good initial result shows the API server reachable and nodes in Ready state. If the API server is unreachable, there is no point debugging application pods yet because the control plane itself is already the primary issue.
Inspect Core System Pods
Next, look at the Kubernetes system namespace.
You want core components and add-ons to be running or completed as expected. Repeated restarts, pending pods, or crash loops in kube-system often point to infrastructure-level trouble rather than app-level trouble.
Pay attention to:
- DNS pods
- network plugin pods
- metrics or ingress components if your platform depends on them
- control-plane static pods in self-managed clusters
Check Recent Cluster Events
Events often reveal issues faster than reading many individual pod specs.
This can expose repeated image-pull failures, scheduling failures, node-pressure events, volume mount issues, or readiness probe failures. A cluster may look "mostly up" while events clearly show widespread trouble.
Validate Workload Scheduling
A cluster is not healthy just because the system pods are alive. It must also schedule real workloads. Check a representative deployment or run a small smoke-test pod.
If the pod schedules, pulls, starts, and reaches Running, the cluster is at least capable of basic workload execution. Clean up afterward:
Look at Resource Pressure
Clusters often fail gradually because of CPU, memory, or disk pressure. When metrics are available, inspect node usage.
If kubectl top is unavailable, confirm whether metrics-server is installed rather than assuming the command itself is the problem.
Distinguish Cluster Health from Application Health
A healthy cluster can still host a broken application, and a broken cluster can make healthy applications look broken. Separate the questions:
- is the control plane working
- are nodes ready
- can pods schedule and start
- is this specific application behaving correctly
That separation prevents circular debugging.
One-Time Checks Versus Continuous Monitoring
Manual health checks are useful during debugging, but production clusters also need continuous monitoring and alerting. A cluster can pass a quick smoke test now and still degrade minutes later under load, disk pressure, or control-plane instability. Use the manual checks as diagnosis tools, not as the entire monitoring strategy.
Common Pitfalls
- Treating
kubectl cluster-infosuccess as proof that the whole cluster is healthy. - Looking only at application namespaces and ignoring
kube-system. - Ignoring events, which often reveal the actual cluster-wide problem quickly.
- Declaring the cluster healthy without verifying workload scheduling.
- Confusing application bugs with cluster infrastructure problems.
Summary
- A healthy Kubernetes cluster is reachable, has ready nodes, stable system pods, and working workload scheduling.
- Start with API and node checks, then inspect
kube-systemand recent events. - Use a small smoke-test workload to prove real scheduling and startup behavior.
- Check resource pressure when nodes or pods behave unpredictably.
- Always separate cluster health from application health when troubleshooting.

