Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Mettre à niveau le module complémentaire de gouvernance des tâches
Utilisez cette section pour mettre à niveau le module complémentaire Amazon EKS de gouvernance des HyperPod tâches entre les versions. Chaque sous-section fournit des procédures spécifiques à la version pour mettre à niveau votre module complémentaire tout en préservant votre configuration existante.
Rubriques
Mise à niveau de la version 1.5 à la version 1.6
La version v1.6.0-eksbuild.1 contient Kueue v0.19.2. Vous pouvez effectuer une mise à niveau directement depuis la version 1.5 avecaws eks update-addon. Cette mise à niveau ne migre pas les versions de stockage des définitions de ressources personnalisées (CRD). Vous n'avez donc pas besoin de sauvegarder ou de recréer des objets Kueue.
Pour mettre à niveau le module complémentaire vers la version 1.6 via l'interface du module complémentaire Amazon EKS, exécutez la commande suivante. Remplacez-le region par votre région et cluster-name par le nom de votre cluster Amazon EKS.
aws eks update-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --addon-version v1.6.0-eksbuild.1 --resolve-conflicts OVERWRITE
Attendez que le statut soit ACTIVE :
aws eks describe-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.status' --output text
Topology-aware planification de la validation de la taille des tranches
À partir de la version 1.6 (Kueue v0.19.2), la gouvernance des tâches valide la taille de la tranche de planification tenant compte de la topologie (le nombre de modules regroupés pour le placement) lorsque vous soumettez une tâche. Si vous soumettez une tâche qui définit l'kueue.x-k8s.io/podset-slice-sizeannotation à une valeur inférieure à1, la gouvernance des tâches rejette la tâche avec une erreur telle que la suivante :
admission webhook "vjob.kb.io" denied the request: spec.template.metadata.annotations[kueue.x-k8s.io/podset-slice-size]: Invalid value: "0": must be greater than or equal to 1
Les versions précédentes ne validaient pas cette valeur. Avant de procéder à la mise à niveau, mettez à jour tous les modèles de tâches qui utilisent des tranches de planification tenant compte de la topologie pour les définir kueue.x-k8s.io/podset-slice-size sur une valeur ou une valeur supérieure. 1
Mise à niveau de la version 1.3.x vers la version 1.5 ou ultérieure
La méthode recommandée pour effectuer une mise à niveau depuis la version 1.3.x est l'option de mise à niveau de la HyperPod console SageMaker AI, qui migre automatiquement les CRD Kueue. Utilisez la procédure manuelle décrite dans cette section uniquement si vous ne pouvez pas utiliser la console. Cette procédure prend en charge la version 1.5 et les versions ultérieures en tant que version cible.
Un passage direct aws eks update-addon de la version 1.3.x à la version 1.5 ou ultérieure échoue car la version v1.3.x stocke certaines définitions de ressources personnalisées (CRD) de Kueue sous la v1alpha1 version API, qui supprime :
CustomResourceDefinition.apiextensions.k8s.io "cohorts.kueue.x-k8s.io" is invalid: status.storedVersions[0]: Invalid value: "v1alpha1": missing from spec.versions
Cette procédure sauvegarde vos objets Kueue et efface l'ancienne version stockée. Il met ensuite à niveau le module complémentaire et restaure vos objets selon le nouveau schéma.
Impact des données et calendrier
Cette procédure supprime et recrée vos objets de ressources personnalisés Kueue (ClusterQueues,, LocalQueues ResourceFlavors, Topologies et objets associés). Il les sauvegarde d'abord et les restaure, de sorte qu'aucune configuration n'est perdue. Il ne supprime aucun espace de noms, ne supprime aucun CRD et ne modifie aucune SageMaker IA ComputeQuota ni ClusterSchedulerConfig aucun enregistrement.
Exécutez-le lorsqu'aucune nouvelle charge de travail n'a besoin d'être soumise. Les pods en cours d'exécution ne sont généralement pas interrompus, mais nous vous recommandons de ne pas vous fier aux charges de travail actives pendant la migration. Les nouvelles charges de travail ne peuvent pas être planifiées tant que la procédure n'est pas terminée. Exécutez sur un cluster à la fois.
Conditions préalables
Avant de commencer, assurez-vous de disposer des éléments suivants :
-
kubectlconfiguré pour le cluster Amazon EKS cible avec un accès administrateur de cluster -
La AWS CLI configuration pour le compte et la région du cluster
-
L’
jqdoit être installée. -
Le module complémentaire est actuellement à la version 1.3.x avec le statut ou
ACTIVEDEGRADED
Tout au long, region remplacez-le par votre région et cluster-name par le nom de votre cluster Amazon EKS.
Pour mettre à niveau le module complémentaire de la version 1.3.x à la version 1.5, procédez comme suit :
-
Vérifiez la version actuelle du module complémentaire et définissez un répertoire de travail.
aws eks describe-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.addonVersion' --output textVérifiez que la sortie commence par
v1.3.. DéfinissezBACKUP_DIRensuite un chemin absolu dans un répertoire accessible en écriture et créez-le. Les étapes suivantes permettent de lire et d'écrire dans cette variable. Exécutez donc chaque étape dans la même session shell.export BACKUP_DIR=/absolute/path/to/backup-dirmkdir -p "$BACKUP_DIR" -
Sauvegardez chaque ressource personnalisée Kueue dans des fichiers locaux.
for crd in admissionchecks clusterqueues cohorts localqueues multikueueclusters \ multikueueconfigs provisioningrequestconfigs resourceflavors topologies \ workloadpriorityclasses workloads; do kubectl get "${crd}.kueue.x-k8s.io" --all-namespaces -o json \ > "$BACKUP_DIR/${crd}.json" 2>/dev/null echo "${crd}: $(jq '.items | length' "$BACKUP_DIR/${crd}.json" 2>/dev/null || echo 0)" doneVérifiez la sauvegarde avant de continuer
Vérifiez que le répertoire de sauvegarde contient un fichier JSON pour chaque ressource personnalisée de la commande précédente et que le nombre d'objets dans la sortie de la commande correspond à celui de votre cluster. Ne poursuivez pas si un fichier est vide ou manquant.
-
Supprimez les objets sauvegardés et effacez l'ancienne version stockée de chaque CRD.
Cela supprime l'entrée
v1alpha1(ouv1beta1)status.storedVersionsafin que les CRD v1.5 ou versions ultérieures puissent être installés. Les objets sont en sécurité dans votre sauvegarde et sont restaurés ultérieurement.for crd in admissionchecks clusterqueues cohorts localqueues multikueueclusters \ multikueueconfigs provisioningrequestconfigs resourceflavors topologies \ workloadpriorityclasses workloads; do kubectl get crd "${crd}.kueue.x-k8s.io" >/dev/null 2>&1 || continue kubectl delete "${crd}.kueue.x-k8s.io" --all --all-namespaces \ --ignore-not-found=true --wait=false --request-timeout=30s kubectl patch crd "${crd}.kueue.x-k8s.io" --subresource=status --type=merge \ --request-timeout=30s -p '{"status":{"storedVersions":["v1beta2"]}}' doneÀ propos de --all-namespaces et de --wait=false
--all-namespacesici sélectionne les ressources personnalisées dans tous les espaces de noms à supprimer ; il ne supprime aucun espace de noms.--wait=falseévite le blocage sur les finaliseurs. La mise à jour du module complémentaire à l'étape suivante les résout. -
Mettez à jour le module complémentaire vers votre version cible (v1.5.0-eksbuild.1 ou version ultérieure).
target-versionRemplacez-la par la version du module complémentaire cible, par exemplev1.5.0-eksbuild.1ouv1.6.0-eksbuild.1.aws eks update-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --addon-versiontarget-version--resolve-conflicts OVERWRITEAttendez que le statut soit
ACTIVE:aws eks describe-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.status' --output text -
Attendez que la nouvelle installation soit terminée avant de procéder à la restauration.
Ne restaurez pas immédiatement après les rapports du module complémentaire
ACTIVE. Attendez que le contrôleur, son webhook et les tâches de post-installation soient prêts, sinon la restauration à l'étape suivante risque de se bloquer.kubectl rollout status deploy/kueue-controller-manager -n kueue-system --timeout=300suntil [ -n "$(kubectl get endpoints -n kueue-system kueue-webhook-service \ -o jsonpath='{.subsets[*].addresses[*].ip}' 2>/dev/null)" ]; do echo "waiting for kueue webhook endpoint..."; sleep 5 donekubectl wait --for=condition=complete job -l app.kubernetes.io/name=kueue \ -n kueue-system --timeout=180s || true -
Restaurez vos objets selon le nouveau schéma.
Cela transforme chaque objet sauvegardé en schéma v1.5 ou version ultérieure (
v1beta2) et le réapplique.transform() { jq ' .apiVersion = "kueue.x-k8s.io/v1beta2" | del(.status) | del(.metadata.resourceVersion, .metadata.uid, .metadata.creationTimestamp, .metadata.generation, .metadata.managedFields, .metadata.selfLink) | del(.metadata.annotations."kubectl.kubernetes.io/last-applied-configuration") | if .kind == "Cohort" and (.spec.parent != null) then .spec.parentName = (.spec.parentName // .spec.parent) | del(.spec.parent) else . end | if .kind == "ClusterQueue" and (.spec.cohort != null) then .spec.cohortName = (.spec.cohortName // .spec.cohort) | del(.spec.cohort) else . end | if .kind == "ClusterQueue" then del(.spec.admissionChecks) else . end | if .kind == "AdmissionCheck" then del(.spec.retryDelayMinutes) else . end ' } for crd in resourceflavors topologies workloadpriorityclasses admissionchecks cohorts \ provisioningrequestconfigs multikueueclusters multikueueconfigs \ clusterqueues localqueues workloads; do f="$BACKUP_DIR/${crd}.json" [ -s "$f" ] || continue count=$(jq '.items | length' "$f") for (( i=0; i<count; i++ )); do obj=$(jq -c ".items[$i]" "$f" | transform) name=$(printf '%s' "$obj" | jq -r '.kind + "/" + .metadata.name') if printf '%s' "$obj" | kubectl apply --request-timeout=30s -f - >/dev/null 2>&1; then echo "applied $name" else echo "check $name (may already be recreated by the add-on)" fi done done -
Vérifiez le résultat.
aws eks describe-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.{version:addonVersion,status:status}'Voici un exemple de sortie (votre résultat
versioncorrespond à celui quetarget-versionvous avez défini à l'étape 4).{ "version": "v1.5.0-eksbuild.1", "status": "ACTIVE" }Vérifiez que vos objets sont présents et qu'aucun CRD n'est toujours
v1alpha1répertorié :kubectl get clusterqueues kubectl get localqueues --all-namespaces kubectl get crd clusterqueues.kueue.x-k8s.io -o jsonpath='{.status.storedVersions}'La
storedVersionssortie ne doit contenir quev1beta2(ouv1beta1etv1beta2), jamaisv1alpha1. Comparez les objets restaurés avec les fichiers pour vous$BACKUP_DIRassurer que les valeurs de configuration restent inchangées.