domino_admin_toolkit.checks.test_node_pool_oversubscription module
- pydantic model domino_admin_toolkit.checks.test_node_pool_oversubscription.NodePoolOversubscriptionAnalyzer
Bases:
AnalyzerBase[NodePoolOversubscriptionRow]Evaluates per-pool resource request totals against allocatable capacity.
- analyze(data)
Analyzes one row and returns a list of CheckResult instances.
- Return type:
- Args:
data: One row dict (
TRow). The Runner calls this once per DataFrame row.- Returns:
List[CheckResult]: A list containing the results of the analysis.
- Raises:
NotImplementedError: If this method is not implemented by subclasses.
- name: ClassVar[str] = 'NodePoolOversubscriptionAnalyzer'
- class domino_admin_toolkit.checks.test_node_pool_oversubscription.NodePoolOversubscriptionRow
Bases:
TypedDict
- domino_admin_toolkit.checks.test_node_pool_oversubscription.node_pool_oversubscription_data(prometheus_client_v2)
Collect per-pool CPU and memory request/limit totals from Prometheus.
- Return type:
- domino_admin_toolkit.checks.test_node_pool_oversubscription.test_node_pool_oversubscription(node_pool_oversubscription_data, runner)
Description: Aggregates CPU and memory requests and limits per Domino node pool and compares request totals against pool allocatable capacity. Surfaces pools where the scheduler has over-committed resources — the primary signal for memory triage and pending-pod incidents.
- Failure Conditions:
A node pool’s CPU or memory requests meet or exceed 100% of pool allocatable (oversubscribed)
Missing requests_pct data for a pool/resource row
- Troubleshooting Steps:
Identify the worst-offending pool and resource from the output table (sorted by requests_pct)
Correlate with the k8s-views-node-pools Grafana dashboard (RE-3038)
Drill down: kubectl describe nodes -l dominodatalab.com/node-pool=<pool>
Check per-pod sizing: test_k8s_platform_sizing and test_pods_mem_cpu_sizing
Look for recent OOM kills or container restarts on nodes in the affected pool
- Resolution Steps:
Reduce resource requests on over-sized workloads in the affected pool
Move workloads to a less loaded node pool or scale out the pool (add nodes)
Review platform component sizing if platform pool is oversubscribed
Cordon and drain severely affected nodes if active evictions are occurring
Required Permissions: Platform admin access, Prometheus read access (in-cluster), kubectl node describe
- See also:
test_k8s_platform_sizing.py — per-pod memory/CPU sizing on platform pool nodes
test_pods_mem_cpu_sizing.py — per-pod memory/CPU sizing across the platform namespace
info/test_node_roles.py::test_node_roles — node-level enumeration and Pressure conditions
test_kubernetes.py::test_container_restarts — restart cadence that often correlates with oversubscription