How to check if Kubernetes cluster is running fine
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
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.
Related reading
- How to check if pod security policy is enabled?
- How to check that a Cassandra node is ready?
- How to check the actual number of incremental fetch session cache slots used in Kafka cluster?
- How to check the containers running on a pod in kubernettes?
- How to check if Python app is running within AWS lambda function?
- How to check if specific resource already exists in CloudFormation script
- How to check if the docker engine and a docker container are running?
- How to check if type of a variable is string?

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.