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 (shturval-npd)

When shturval-npd is installed, the Node column shows the chart conditions. A permanent condition does not return to False by itself.

After chart installation

These five conditions are present immediately, without an SSP:

StateDescriptionHealthy Status
ReadonlyFilesystemThe filesystem was remounted read-onlyfalse
KernelDeadlockThe Linux kernel is in a deadlockfalse
XfsShutdownThe XFS filesystem has shut downfalse
CperHardwareErrorFatalA hardware error with fatal severityfalse
CorruptDockerOverlay2overlay2 storage is corruptfalse

When extra monitors are enabled

These conditions appear when the matching JSON files from the image are passed in an SSP. They are not present after a plain chart install.

StateDescriptionHealthy Status
FrequentKubeletRestartkubelet restarts oftenfalse
FrequentDockerRestartdocker restarts oftenfalse
FrequentContainerdRestartcontainerd restarts oftenfalse
FrequentUnregisterNetDeviceThe kernel often waits for a network device to be releasedfalse
ContainerRuntimeUnhealthyThe container runtime does not respondfalse
KubeletUnhealthykubelet does not pass the health checkfalse
Screenshot: Node column with extra monitors

Node column with extra monitors


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, Node column.
  • CLI: kubectl describe node <name> — Conditions section.