Node Conditions

Overview

Node Conditions - node conditions that can be used to determine whether the node is healthy and ready to accept pods. Conditions are displayed on node page and in kubectl describe node.


Healthy node states

StateDescriptionHealthy Status
NetworkUnavailableCilium/CNI is not running on the nodefalse
MemoryPressureKubelet reports low memoryfalse
DiskPressureKubelet reports low disk spacefalse
PIDPressureToo many processes (PID) on nodefalse
ReadyThe node is ready to accept podstrue

Additional conditions (Node Problem Detector)

When Node Problem Detector (NPD) is installed, additional conditions may be displayed:

StateDescriptionHealthy Status
KernelDeadlockLinux kernel lockedfalse
CNIProblemCNI plugin does not work correctlyfalse
DiskPressureContainerNot enough space for containersfalse
KubeletUnhealthyProblems with kubeletfalse
CorruptDockerOverlay2Storage driver corruptionfalse
ReadOnlyContainerRead-only container file systemfalse
KubeProxyUnhealthyProblems with kube-proxyfalse

Automatic Taints under conditions

Under certain conditions, Kubernetes automatically adds Taints to the node:

TaintDescriptionEffect
node.kubernetes.io/not-readyReady=FalseNoExecute
node.kubernetes.io/unreachableReady=UnknownNoExecute
node.kubernetes.io/memory-pressureOut of memoryNoSchedule
node.kubernetes.io/disk-pressureDisk shortageNoSchedule
node.kubernetes.io/pid-pressurePID LimitNoSchedule
node.kubernetes.io/network-unavailableNetwork unavailableNoSchedule
node.kubernetes.io/unschedulableThe node is not subject to scheduling (cordon)NoSchedule
node.cloudprovider.kubernetes.io/uninitializedNode with cloud provider before cloud-controller-manager initializationNoSchedule

Read more about built-in taints in Taints and Tolerations.


Where to watch

  • GUI: Administration → Manage nodes → click on a node → “Node” tab → “Status” block.
  • CLI: kubectl describe node <name> — Conditions section.