HAMi Scheduler not ready after upgrading or updating Accelerator Virtualization
In a Kubernetes cluster with only one schedulable GPU worker node, HAMi Scheduler might fail to complete a rolling update when you upgrade the Neutree control plane from an earlier version or update Accelerator Virtualization after disabling it. In this case, the cluster status might become Failed, and the Accelerator Virtualization component status might become NotReady.
You might observe the following symptoms:
- The
hami-schedulerDeployment has both an old Ready Pod and a new Pending Pod. - Scheduling events for the new
hami-schedulerPod include failure reasons related to Pod anti-affinity.
The hami-scheduler Pod in affected earlier versions uses a hard Pod anti-affinity rule. In a cluster with only one schedulable GPU worker node, where the control-plane node is unschedulable or has taints that are not tolerated, the new Pod might fail to be scheduled after the old Pod occupies the only schedulable node. As a result, the rolling update cannot converge.
The current version has adjusted the rolling update strategy and Pod anti-affinity rule of HAMi Scheduler. After you perform one manual recovery and the new HAMi Scheduler version takes effect, subsequent upgrades or Accelerator Virtualization updates no longer require this compatibility workaround for earlier versions.
Solution
Section titled “Solution”Delete the old hami-scheduler Pod.
Prerequisites
- You have obtained access to the target Kubernetes cluster.
- You have confirmed that the issue occurs in a cluster with only one schedulable GPU worker node.
- You have confirmed that the new
hami-schedulerPod is in the Pending state due to the Pod anti-affinity rule.
Procedure
-
Get the namespace of the cluster:
Terminal window kubectl get ns \-l neutree.ai/neutree-cluster=<cluster-name>,neutree.ai/neutree-workspace=<workspace-name>Parameter Description <cluster-name>Cluster name. <workspace-name>Name of the workspace to which the cluster belongs. -
Check the status of the
hami-schedulerPod:Terminal window kubectl -n <namespace> get pod \-l app.kubernetes.io/component=hami-scheduler \-o wide -
Check the scheduling events of the Pending Pod, and confirm that the failure reason is related to Pod anti-affinity:
Terminal window kubectl -n <namespace> describe pod <pending-hami-scheduler-pod> -
Delete the
hami-schedulerPod:Terminal window kubectl -n <namespace> delete pod \-l app.kubernetes.io/component=hami-schedulerThe Kubernetes Deployment automatically recreates the
hami-schedulerPod.
Validation
Section titled “Validation”-
Confirm that the
hami-schedulerDeployment is ready:Terminal window kubectl -n <namespace> rollout status deployment/hami-scheduler -
Confirm that the
hami-schedulerPod is in theRunningstate:Terminal window kubectl -n <namespace> get pod \-l app.kubernetes.io/component=hami-scheduler -
In the Neutree management interface, check the cluster status and confirm that the cluster has recovered to Running and that the Accelerator Virtualization component has recovered to
Ready.