Skip to content

Add cmk-node-remediation: automated node cordon, drain & vm-reset for B200 NVLink bug - #88

Merged
youngjeong46 merged 1 commit into
crusoecloud:mainfrom
chekolyn:cmk-node-remediation
Aug 21, 2026
Merged

Add cmk-node-remediation: automated node cordon, drain & vm-reset for B200 NVLink bug#88
youngjeong46 merged 1 commit into
crusoecloud:mainfrom
chekolyn:cmk-node-remediation

Conversation

@chekolyn

@chekolyn chekolyn commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Kubernetes CronJob that automatically cordons, drains, and remediates nodes approaching critical uptime thresholds. Built for Crusoe Managed Kubernetes (CMK) clusters with B200 GPU nodes affected by the NVIDIA 60-day NVLink firmware bug.

Background

NVIDIA Blackwell B200/B300 systems experience NVLink hangs after ~60 days of continuous uptime due to a firmware issue. NVIDIA has released patched VBIOS and system tray firmware (DGX firmware release 26.03.1+) that fixes the root cause. For systems that have not yet been patched, scheduled preventative reboots before the 60-day threshold avoid sudden production hangs.

See the NVIDIA DGX B300 firmware update guide for details.

Features

  • Two-phase threshold design — cordon at 55d, remediate at 60d (configurable)
  • Guardrails — global + per-pool limits (absolute count or percentage)
  • Self-node exclusion — never drains the node running the CronJob pod
  • Cooldown — skips nodes remediated within the cooldown period
  • Max retries — leaves nodes cordoned for manual intervention after N failed attempts
  • Dry-run mode — logs all actions without executing cordon/drain/remediation
  • Actions: vm-reset, vm-stop, vm-start, vm-delete, noop, multi-step sequences
  • PDB-aware drain with optional force eviction fallback
  • Helm chart with built-in crusoe-secrets support for CMK clusters
  • E2E test harness with 10 phases (build, deploy, verify, vm-reset, empirical)

Testing

  • All 55 unit tests pass (go test ./internal/config/...)
  • E2E validated on live CMK cluster with cordonThreshold: 10m, remediationThreshold: 20m, dryRun: false, action: vm-reset — cordon, drain, vm-reset, boot verification, cooldown, and guardrails all functioning correctly

@chekolyn
chekolyn force-pushed the cmk-node-remediation branch 4 times, most recently from 9e61e14 to 21165cf Compare August 17, 2026 22:33

@youngjeong46 youngjeong46 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@chekolyn - we just added a simple pre-commit check. You just need to add a link to your repo readme to the top-level readme per Contributing guide.

@chekolyn
chekolyn force-pushed the cmk-node-remediation branch 6 times, most recently from 329d532 to 185ce39 Compare August 21, 2026 04:13
… NVLink bug

Kubernetes CronJob that automatically cordons, drains, and remediates
nodes approaching critical uptime thresholds. Built for Crusoe Managed
Kubernetes (CMK) clusters with nodes affected by the NVIDIA Blackwell
NVLink bug.

Features:
- Two-phase threshold design (cordon → remediate) with configurable cooldown
- Guardrails: global + per-pool limits (absolute count or percentage)
- Self-node exclusion, max retries, dry-run mode
- Actions: vm-reset, vm-stop, vm-start, vm-delete, noop, multi-step sequences
- PDB-aware drain with optional force eviction fallback
- Helm chart with built-in crusoe-secrets support for CMK clusters
- E2E test harness with 10 phases (build, deploy, verify, vm-reset, empirical)
- RemediationReport CRD: per-nodepool status via kubectl get remediationreport
- Progressive CRD updates during each run (running → per-pool → final)
- Serial processing with guardrail-based concurrency limits
- Journald logging support (dual stdout + journald via Crusoe Watch Agent)
@chekolyn
chekolyn force-pushed the cmk-node-remediation branch from 185ce39 to 3b9d296 Compare August 21, 2026 17:46
@chekolyn

Copy link
Copy Markdown
Contributor Author

@chekolyn - we just added a simple pre-commit check. You just need to add a link to your repo readme to the top-level readme per Contributing guide.

Thank you @youngjeong46 . I've updated the main README.md with the required entry.

@youngjeong46
youngjeong46 merged commit 8becda6 into crusoecloud:main Aug 21, 2026
1 check passed
@chekolyn
chekolyn deleted the cmk-node-remediation branch August 21, 2026 20:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants