domino_admin_toolkit.checks.test_node_oom_kills module
- pydantic model domino_admin_toolkit.checks.test_node_oom_kills.NodeOOMKillAnalyzer
Bases:
AnalyzerBaseDetects kernel-level OOM kills on cluster nodes.
- Fields:
- analyze(data)
Evaluate a single node’s OOM kill count against the configured threshold.
- Return type:
- name: ClassVar[str] = 'NodeOOMKillAnalyzer'
- domino_admin_toolkit.checks.test_node_oom_kills.node_oom_data(prometheus_client_v2)
Collect node OOM kill metrics from Prometheus.
- Return type:
- domino_admin_toolkit.checks.test_node_oom_kills.test_node_oom_kills(node_oom_data, ksm_node_inventory, runner)
Description: Detects kernel-level OOM kills on cluster nodes. Failure Conditions: Any node had host-level OOM kills in the last hour; node-exporter
covers too little of the cluster for the verdict to be cluster-wide.
- Troubleshooting Steps:
Identify which node(s) had OOM kills from the output table
Check node memory usage: kubectl top node <node>
Check system process memory: ssh to node, run ps aux –sort=-rss | head
Check for memory leaks in system processes (containerd, kubelet)
- Resolution Steps:
Cordon the affected node: kubectl cordon <node>
Drain workloads: kubectl drain <node> –ignore-daemonsets
Investigate root cause (containerd leak, kubelet memory, etc.)
Restart the affected system process or replace the node
If the coverage result reports missing nodes, check that the prometheus-node-exporter DaemonSet tolerates every node pool’s taints
Required Permissions: Cluster admin, node SSH access for investigation See also:
test_node_ephemeral_storage.py — same node-exporter source, so the same coverage limits
test_node_time_drift.py — same node-exporter source, so the same coverage limits
info/test_node_roles.py — full node list from the Kubernetes API, for comparison