Document MachinePool Health - #137
Conversation
MachinePool Health documented based on the implementation of IEP-15. This adds a new Pools and Lifecycle section, which can also accomodate MachinePool eviction and other lifecycle related topics in the future. Signed-off-by: Felix Riegger <[email protected]>
|
Warning Review limit reached
Next review available in: 56 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughAdds architecture documentation for MachinePool health reporting, including Lease heartbeats, Ready condition semantics, lifecycle grace-period handling, configuration defaults, and current scheduler behavior. Adds the page to the IaaS architecture sidebar and scheduling documentation. ChangesMachinePool health documentation
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related issues
Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/iaas/architecture/machine-pool-health.md`:
- Around line 11-15: Clarify in the architecture page that the MachinePool
reconciler is the sole writer of MachinePool.status, including the Ready
condition. Revise the lifecycle controller description to say it triggers status
reprocessing when the machinepoollet stops reporting, rather than marking Ready
directly; do not describe both components as status writers.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 0d01afa8-2f4f-48f0-9d29-24b59daded9e
📒 Files selected for processing (3)
docs/.vitepress/config.mtsdocs/iaas/architecture/machine-pool-health.mddocs/iaas/architecture/scheduling.md
| 1. **The `machinepoollet`**, which regularly reports its health by renewing a `Lease` object and by | ||
| propagating a `Ready` condition onto the `MachinePool`'s `.status.conditions`. | ||
| 2. **The `MachinePool` lifecycle controller** in the IronCore control plane (`ironcore-controller-manager`), | ||
| which watches the `MachinePool`s and their leases and marks a pool's `Ready` condition as `Unknown` if the | ||
| `machinepoollet` stops reporting. |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
rg -n 'MachinePoolStatusUnknown|MachinePoolLifecycle|UpdateStatus|Patch|conditions' --glob '*.go'Repository: ironcore-dev/ironcore-dev.github.io
Length of output: 173
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Repo files matching machine pool health / lifecycle:"
fd -i 'machine-pool-health|lifecycle|machinepool|machine pool' . | sed -n '1,120p'
echo
echo "Target file excerpt:"
if [ -f docs/iaas/architecture/machine-pool-health.md ]; then
nl -ba docs/iaas/architecture/machine-pool-health.md | sed -n '1,130p'
fi
echo
echo "Repository-wide search exact/source terms (repo only):"
rg -n 'status writer|single status|machinepoollet|MachinePoolLifecycle|Lifecycle controller|pool reconciler|Ready=Unknown|Ready.*Unknown|status\.conditions|status\.Condition|ReadyCondition|MachinePool.*status' -S .Repository: ironcore-dev/ironcore-dev.github.io
Length of output: 337
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Repository files matching machine pool health / lifecycle:"
find . -path './.git' -prune -o \( -iname '*machine-pool-health*' -o -iname '*lifecycle*' -o -iname '*machinepool*' \) -print | sed -n '1,160p'
echo
echo "Target file excerpt (lines 1-130):"
if [ -f docs/iaas/architecture/machine-pool-health.md ]; then
awk '{printf "%6d\t%s\n", NR, $0}' docs/iaas/architecture/machine-pool-health.md | sed -n '1,130p'
fi
echo
echo "Repository-wide search exact/source terms (repo only):"
rg -n 'status writer|single status|machinepoollet|MachinePoolLifecycle|Lifecycle controller|lifecycle controller|pool reconciler|Ready=Unknown|Ready.*Unknown|status\.conditions|status\.Condition|ReadyCondition|MachinePool.*status' -S .Repository: ironcore-dev/ironcore-dev.github.io
Length of output: 14548
Clarify MachinePool.status ownership.
The page says both the lifecycle controller and the pool reconciler can update the Ready condition, while also saying the pool reconciler is the single status writer. State that Reconciler-only writes occur, and update the lifecycle-controller wording to describe triggering status reprocessing; otherwise document ownership and merge/serialization handling if both may patch.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/iaas/architecture/machine-pool-health.md` around lines 11 - 15, Clarify
in the architecture page that the MachinePool reconciler is the sole writer of
MachinePool.status, including the Ready condition. Revise the lifecycle
controller description to say it triggers status reprocessing when the
machinepoollet stops reporting, rather than marking Ready directly; do not
describe both components as status writers.
Signed-off-by: Felix Riegger <[email protected]>
Signed-off-by: Felix Riegger <[email protected]>
MachinePoolhealth monitoring documented based on the implementation of IEP-15.This adds a new Pools and Lifecycle section, which can also accommodate
MachinePooleviction and other lifecycle related topics in the future.Contributes to #ironcore-dev/ironcore#1472
Summary by CodeRabbit
Readystatus transitions, including timing/configuration defaults.Readyhealth; pools withReady=FalseorReady=Unknowncan still receive assignments.