Issues with stability with Kubernetes cluster before adding networking
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Introduction
If a Kubernetes cluster seems unstable before a network plugin is installed, that is often expected behavior rather than a mysterious failure. A fresh control plane can start, but the cluster is not really complete until a Container Network Interface, or CNI, plugin is present and the nodes can establish pod networking.
Without pod networking, several core components remain degraded. Nodes may report NotReady, DNS pods may stay pending, and pods that require networking never move into a healthy running state.
What "Before Adding Networking" Usually Means
A Kubernetes installation does not include universal pod networking by itself. kubeadm init, for example, brings up control-plane components, but it expects you to install a CNI implementation such as Calico, Cilium, or Flannel afterward.
Until that happens, a cluster may show symptoms like:
- worker or control-plane nodes in
NotReady - '
corednspods stuck inPending' - kubelet warnings about missing CNI configuration
- pods failing sandbox creation
Those symptoms are not separate stability bugs in most cases. They are the direct result of incomplete cluster networking.
Check the Actual Failure Signals
Start by asking the cluster what is failing:
If networking is the missing piece, you often see messages similar to "network plugin not ready" or errors indicating that no CNI configuration files were found under the node's CNI directory.
On a node, kubelet logs are often the fastest confirmation:
Typical clues include sandbox creation failures or repeated retries to initialize networking.
Why the Cluster Looks Unstable
Kubernetes depends on pod-to-pod and pod-to-service communication for many system components. Even though the API server might be up, the cluster is not functionally healthy if pods cannot get network interfaces and routes.
For example:
- '
corednsneeds a working network to run normally' - application pods cannot communicate with services
- readiness probes fail if the network path is broken
- control loops keep retrying failed pod setups
That constant retry pattern makes the cluster look unstable, but the underlying cause is usually straightforward: the node runtime cannot create networked pod sandboxes yet.
Install a CNI Plugin and Recheck
The fix is to install a supported CNI plugin that matches the cluster's configuration. The exact manifest depends on your environment, but the verification pattern is always the same:
After the CNI plugin is installed and its daemonset becomes healthy, nodes should move toward Ready, and core system pods should begin starting normally.
Do not treat a cluster as production-ready before this step. A "control plane is running" state is not the same as a healthy cluster.
Separate Expected Degradation from Real Stability Problems
There can still be true stability issues unrelated to networking, such as:
- insufficient CPU or memory on nodes
- broken container runtime configuration
- clock drift or certificate issues
- failing etcd on control-plane nodes
But you should not chase those first if the cluster does not even have pod networking. Install the CNI, wait for the expected components to settle, and then reassess anything that remains unhealthy.
That order matters because missing networking can mask or mimic other failures.
Common Pitfalls
- Assuming the cluster is fully operational immediately after control-plane bootstrap.
- Debugging
corednsor application pods before confirming that a CNI plugin is installed and healthy. - Treating
NotReadynodes as proof of a broad cluster failure when kubelet is explicitly reporting missing pod networking. - Mixing manifests or CIDR settings that do not match the chosen CNI plugin.
Summary
- A Kubernetes cluster commonly appears degraded before pod networking is installed.
- Missing CNI configuration often explains
NotReadynodes and pending system pods. - Check
kubectl describe nodeand kubelet logs for direct networking-related errors. - Install the correct CNI plugin before drawing conclusions about cluster stability.
- Re-evaluate the cluster only after networking is healthy, because many apparent failures disappear once pod networking exists.
Related reading
- Issuing certificate as Secret does not exist
- Istio DestinationRule gives upstream connect error or disconnect/reset before headers
- Istio does not forward Authorization header
- Istio Virtual Service Relationship to Normal Kubernetes Service
- Java 11 on AWS beanstalk for Spring boot project
- Javascript to download a file from amazon s3 bucket?
- Istio Distributed Tracing shows just 1 span
- Java health monitoring in clustered environment

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.