feat: tolerate HyperPod node-health-status taint in training-operator - #449
Open
kethang-sm wants to merge 1 commit into
Open
feat: tolerate HyperPod node-health-status taint in training-operator#449kethang-sm wants to merge 1 commit into
kethang-sm wants to merge 1 commit into
Conversation
The kubeflow training-operator Deployment has no tolerations, so it cannot be scheduled onto nodes carrying the HyperPod deep health check taint sagemaker.amazonaws.com/node-health-status=Unschedulable:NoSchedule. On clusters where every node is tainted during an on-start deep health check, the operator pod stays Pending and PyTorchJob-based checks such as MultiNodeTraining never get reconciled. Other controllers and device plugins in this chart already tolerate the same taint (mpi-operator, neuron-device-plugin, nvidia-device-plugin, aws-efa-k8s-device-plugin). This makes training-operators consistent.
kethang-sm
requested a deployment
to
manual-approval
August 20, 2026 21:56 — with
GitHub Actions
Waiting
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What's changing and why?
The kubeflow training-operator Deployment has no tolerations, so it cannot be scheduled onto nodes carrying the HyperPod deep health check taint sagemaker.amazonaws.com/node-health-status=Unschedulable:NoSchedule.
On clusters where every node is tainted during an on-start deep health check, the operator pod stays Pending and PyTorchJob-based checks such as MultiNodeTrainingValidation never get reconciled.
Other controllers and device plugins in this chart already tolerate the same taint (mpi-operator, neuron-device-plugin, nvidia-device-plugin, aws-efa-k8s-device-plugin).
Before/After UX
Before:
During an on-start deep health check, the operator pod cannot be placed:
$ kubectl -n kubeflow get pods
NAME READY STATUS RESTARTS AGE
training-operator-7d9f8c6b4d-x2n7q 0/1 Pending 0 4m
Events:
Warning FailedScheduling ... 0/3 nodes are available: 3 node(s) had untolerated
taint {sagemaker.amazonaws.com/node-health-status: Unschedulable}
PyTorchJob-based deep health checks are never reconciled.
After:
The operator pod schedules onto a tainted node and reconciles PyTorchJobs normally:
$ kubectl -n kubeflow get pods
NAME READY STATUS RESTARTS AGE
training-operator-7d9f8c6b4d-x2n7q 1/1 Running 0 30s
How was this change tested?
helm lint helm_chart/HyperPodHelmChart/charts/training-operators— passesInstalled this chart on a live HyperPod EKS cluster (2 ×
ml.g6.8xlarge) with both nodes taintedsagemaker.amazonaws.com/node-health-status=Unschedulable:NoSchedule:NAME READY STATUS NODE
tolerationtest-training-operators-86b89c5564-69t57 1/1 Running hyperpod-i-0e4270...
Negative control — removed the toleration from the same live Deployment, same tainted nodes:
NAME STATUS NODE
tolerationtest-training-operators-6c47bd8d5-bdw7h Pending
Warning FailedScheduling default-scheduler 0/2 nodes are available: 2 node(s) had
untolerated taint {sagemaker.amazonaws.com/node-health-status: Unschedulable}.
Separately, the equivalent toleration has been running in an internal HyperPod integration test that installs the training-operator from a standalone
manifest: with the MultiNodeTraining deep health check enabled, burn-in completed and nodes were labeled
Passed.Are unit tests added?
Are integration tests added?
Reviewer Guidelines
One of the following must be true: