View a markdown version of this page

Aktualisieren Sie das Task-Governance-Add-on - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Aktualisieren Sie das Task-Governance-Add-on

Verwenden Sie diesen Abschnitt, um das Amazon EKS-Add-on zur HyperPod Aufgabenverwaltung zwischen den Versionen zu aktualisieren. Jeder Unterabschnitt enthält versionsspezifische Verfahren für das Upgrade Ihres Add-ons unter Beibehaltung Ihrer vorhandenen Konfiguration.

Führen Sie ein Upgrade von v1.3.x auf v1.5 durch

Die empfohlene Methode für ein Upgrade von v1.3.x auf v1.5 ist die Upgrade-Option in der SageMaker HyperPod AI-Konsole, die die Kueue-CRDs automatisch migriert. Verwenden Sie das manuelle Verfahren in diesem Abschnitt nur, wenn Sie die Konsole nicht verwenden können.

Eine direkte Übertragung aws eks update-addon von v1.3.x auf v1.5 schlägt fehl, weil v1.3.x einige benutzerdefinierte Kueue-Ressourcendefinitionen (CRDs) unter der API-Version speichert, die v1alpha1 in Version 1.5 entfernt wird:

CustomResourceDefinition.apiextensions.k8s.io "cohorts.kueue.x-k8s.io" is invalid: status.storedVersions[0]: Invalid value: "v1alpha1": missing from spec.versions

Dieses Verfahren sichert Ihre Kueue-Objekte und löscht die alte gespeicherte Version. Anschließend wird das Add-on aktualisiert und Ihre Objekte unter dem neuen Schema wiederhergestellt.

Auswirkung und Zeitpunkt der Daten

Dieses Verfahren löscht Ihre benutzerdefinierten Kueue-Ressourcenobjekte (ClusterQueues,, LocalQueues ResourceFlavors, Topologien und verwandte Objekte) und erstellt sie neu. Es sichert sie zuerst und stellt sie wieder her, sodass keine Konfiguration verloren geht. Es löscht keinen Namespace, löscht keine CRD und ändert keine SageMaker KI ComputeQuota oder ClusterSchedulerConfig keinen Datensatz.

Führen Sie dies aus, wenn keine neuen Workloads eingereicht werden müssen. Laufende Pods werden in der Regel nicht unterbrochen, wir empfehlen jedoch, sich während der Migration nicht auf aktive Workloads zu verlassen. Neue Workloads können erst geplant werden, wenn das Verfahren abgeschlossen ist. Führen Sie die Ausführung jeweils für einen Cluster aus.

Voraussetzungen

Stellen Sie vor dem Beginn sicher, dass Sie über das Folgende verfügen:

  • kubectlkonfiguriert für den Amazon EKS-Zielcluster mit Cluster-Administratorzugriff

  • Die für das Konto und die Region des Clusters AWS CLI konfigurierte

  • jq installiert

  • Das Add-on befindet sich derzeit auf Version 1.3.x mit Status oder ACTIVE DEGRADED

Ersetzen Sie es durchgehend region durch Ihre Region und cluster-name durch Ihren Amazon EKS-Clusternamen.

Gehen Sie wie folgt vor, um das Add-on von Version 1.3.x auf Version 1.5 zu aktualisieren:

  1. Bestätigen Sie die aktuelle Add-on-Version und legen Sie ein Arbeitsverzeichnis fest.

    aws eks describe-addon --region region --cluster-name cluster-name \ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.addonVersion' --output text

    Bestätigen Sie, dass die Ausgabe mit beginntv1.3.. Stellen Sie dann BACKUP_DIR einen absoluten Pfad in einem beschreibbaren Verzeichnis ein und erstellen Sie ihn. Spätere Schritte lesen aus dieser Variablen und schreiben in sie. Führen Sie daher jeden Schritt in derselben Shell-Sitzung aus.

    export BACKUP_DIR=/absolute/path/to/backup-dir mkdir -p "$BACKUP_DIR"
  2. Sichern Sie jede benutzerdefinierte Kueue-Ressource in lokalen Dateien.

    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)" done
    Überprüfen Sie das Backup, bevor Sie fortfahren

    Vergewissern Sie sich, dass das Backup-Verzeichnis eine JSON-Datei für jede benutzerdefinierte Ressource im vorherigen Befehl enthält und dass die Anzahl der Objekte in der Befehlsausgabe mit der Anzahl der Objekte in Ihrem Cluster übereinstimmt. Fahren Sie nicht fort, wenn eine Datei fehlt oder leer ist.

  3. Löschen Sie die gesicherten Objekte und löschen Sie die alte gespeicherte Version von jeder CRD.

    Dadurch wird der Eintrag v1alpha1 (oderv1beta1) entfernt, status.storedVersions sodass die CRDs der Version 1.5 installiert werden können. Die Objekte sind in Ihrem Backup sicher und werden in einem späteren Schritt wiederhergestellt.

    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
    Über --all-namespaces und --wait=false

    --all-namespaceswählt hier benutzerdefinierte Ressourcen in allen Namespaces zum Löschen aus; es wird kein Namespace gelöscht. --wait=falsevermeidet das Blockieren von Finalizern. Das Add-On-Update im nächsten Schritt behebt sie.

  4. Aktualisieren Sie das Add-on auf Version 1.5.

    aws eks update-addon --region region --cluster-name cluster-name \ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --addon-version v1.5.0-eksbuild.1 --resolve-conflicts OVERWRITE

    Warte, bis der Status lautetACTIVE:

    aws eks describe-addon --region region --cluster-name cluster-name \ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.status' --output text
  5. Warten Sie, bis die neue Installation abgeschlossen ist, bevor Sie sie wiederherstellen.

    Stellen Sie das Gerät nicht sofort wieder her, nachdem das Add-on gemeldet wurdeACTIVE. Warten Sie, bis der Controller, sein Webhook und die Jobs nach der Installation fertig sind. Andernfalls kann die Wiederherstellung im nächsten Schritt hängen bleiben.

    kubectl rollout status deploy/kueue-controller-manager -n kueue-system --timeout=300s
    until [ -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 done
    kubectl wait --for=condition=complete job -l app.kubernetes.io/name=kueue \ -n kueue-system --timeout=180s || true
  6. Stellen Sie Ihre Objekte unter dem neuen Schema wieder her.

    Dadurch wird jedes gesicherte Objekt in das v1.5 (v1beta2) -Schema umgewandelt und erneut angewendet.

    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
  7. Überprüfen Sie das Ergebnis.

    aws eks describe-addon --region region --cluster-name cluster-name \ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.{version:addonVersion,status:status}'

    Eine Beispielausgabe sieht wie folgt aus.

    { "version": "v1.5.0-eksbuild.1", "status": "ACTIVE" }

    Vergewissern Sie sich, dass Ihre Objekte vorhanden sind und keine CRD-Listen v1alpha1 immer noch vorhanden sind:

    kubectl get clusterqueues kubectl get localqueues --all-namespaces kubectl get crd clusterqueues.kueue.x-k8s.io -o jsonpath='{.status.storedVersions}'

    Die storedVersions Ausgabe darf nur v1beta2 (oder v1beta1 undv1beta2) enthalten, niemalsv1alpha1. Vergleichen Sie die wiederhergestellten Objekte mit den Dateien in, $BACKUP_DIR um sicherzustellen, dass Ihre Konfigurationswerte unverändert sind.