node-problem-detector is a Kubernetes daemon that detects and reports node problems to the cluster management stack.
The tool addresses the problem that infrastructure, hardware, kernel, and container runtime issues on nodes remain invisible to Kubernetes, causing the scheduler to continue placing pods on degraded nodes. node-problem-detector runs as a daemon on each node, monitors for various problem types, and reports them to the API server using either NodeCondition objects for permanent issues that make a node unavailable or Event objects for temporary problems with limited impact. The daemon can run as a DaemonSet or standalone, and is enabled by default in managed Kubernetes offerings including GKE and AKS.
The tool is suited for operators who need visibility into node health across their cluster. It works by composing multiple problem daemons, each monitoring a specific category of issues such as infrastructure services, hardware health, kernel stability, or container runtime responsiveness. Individual problem daemon types can be disabled at compilation time to reduce binary size and remove unused dependencies. This approach makes it appropriate for any Kubernetes deployment where node problems need to be surfaced to higher-level cluster management systems, though it is particularly valuable in large clusters where manual node monitoring is impractical.
The project maintains active development with regular updates to problem detection logic and daemon implementations. The codebase shows ongoing refinement of how problems are categorized and reported through the API. The tool continues to evolve its architecture, with plans documented to separate problem daemons into distinct containers composed via pod specifications rather than running as goroutines within a single binary. The project accepts contributions that extend problem daemon coverage and improve detection accuracy for existing problem categories.