View a markdown version of this page

Tingkatkan add-on tata kelola tugas - Amazon SageMaker AI

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tingkatkan add-on tata kelola tugas

Gunakan bagian ini untuk meningkatkan tata kelola HyperPod tugas Amazon EKS add-on antar versi. Setiap subbagian menyediakan prosedur khusus versi untuk meningkatkan add-on Anda sambil mempertahankan konfigurasi yang ada.

Tingkatkan dari v1.3.x ke v1.5

Cara yang disarankan untuk meningkatkan dari v1.3.x ke v1.5 adalah opsi peningkatan di HyperPod konsol SageMaker AI, yang memigrasikan CRD Kueue secara otomatis. Gunakan prosedur manual di bagian ini hanya jika Anda tidak dapat menggunakan konsol.

Langsung aws eks update-addon dari v1.3.x ke v1.5 gagal karena v1.3.x menyimpan beberapa definisi sumber daya kustom Kueue (CRD) di bawah versi API, yang dihapus v1.5: v1alpha1

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

Prosedur ini mencadangkan objek Kueue Anda dan menghapus versi lama yang disimpan. Kemudian memutakhirkan add-on dan mengembalikan objek Anda di bawah skema baru.

Dampak dan waktu data

Prosedur ini menghapus dan membuat ulang objek sumber daya kustom Kueue Anda (ClusterQueues,,, Topologi LocalQueues ResourceFlavors, dan objek terkait). Ini mendukungnya terlebih dahulu dan mengembalikannya, jadi tidak ada konfigurasi yang hilang. Itu tidak menghapus namespace apa pun, tidak menghapus CRD apa pun, dan tidak mengubah SageMaker AI ComputeQuota atau catatan apa pun. ClusterSchedulerConfig

Jalankan ini ketika tidak ada beban kerja baru yang perlu dikirimkan. Pod yang sedang berjalan umumnya tidak terganggu, tetapi kami sarankan untuk tidak mengandalkan beban kerja aktif selama migrasi. Beban kerja baru tidak dapat dijadwalkan sampai prosedur selesai. Jalankan melawan satu cluster pada satu waktu.

Prasyarat

Sebelum Anda mulai, pastikan Anda memiliki yang berikut:

  • kubectldikonfigurasi untuk cluster Amazon EKS target dengan akses cluster-administrator

  • AWS CLI Konfigurasi untuk akun cluster dan Region

  • jqdipasang

  • Add-on saat ini di v1.3.x dengan status atau ACTIVE DEGRADED

Secara keseluruhan, ganti region dengan Wilayah Anda dan cluster-name dengan nama cluster Amazon EKS Anda.

Untuk memutakhirkan add-on dari v1.3.x ke v1.5, selesaikan langkah-langkah berikut:

  1. Konfirmasikan versi add-on saat ini dan atur direktori kerja.

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

    Konfirmasikan output dimulai denganv1.3.. Kemudian atur BACKUP_DIR ke jalur absolut dalam direktori yang dapat ditulis dan buat. Langkah-langkah selanjutnya membaca dari dan menulis ke variabel ini, jadi jalankan setiap langkah dalam sesi shell yang sama.

    export BACKUP_DIR=/absolute/path/to/backup-dir mkdir -p "$BACKUP_DIR"
  2. Cadangkan setiap sumber daya kustom Kueue ke file lokal.

    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
    Verifikasi cadangan sebelum melanjutkan

    Konfirmasikan bahwa direktori cadangan berisi file JSON untuk setiap sumber daya kustom dalam perintah sebelumnya, dan bahwa objek yang dihitung dalam output perintah cocok dengan apa yang dimiliki cluster Anda. Jangan melanjutkan jika ada file yang hilang atau kosong.

  3. Hapus objek yang dicadangkan dan hapus versi lama yang disimpan dari setiap CRD.

    Ini menghapus entri v1alpha1 (atauv1beta1) dari status.storedVersions sehingga CRD v1.5 dapat diinstal. Objek aman di cadangan Anda dan dipulihkan di langkah selanjutnya.

    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
    Tentang --all-namespaces dan --wait=false

    --all-namespacesdi sini memilih sumber daya khusus di semua ruang nama untuk dihapus; itu tidak menghapus namespace apa pun. --wait=falsemenghindari pemblokiran pada finalizer. Pembaruan add-on pada langkah berikutnya menyelesaikannya.

  4. Perbarui add-on ke v1.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

    Tunggu sampai statusnyaACTIVE:

    aws eks describe-addon --region region --cluster-name cluster-name \ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.status' --output text
  5. Tunggu hingga instalasi baru selesai sebelum memulihkan.

    Jangan memulihkan segera setelah laporan ACTIVE add-on. Tunggu pengontrol, webhok-nya, dan pekerjaan pasca-instal siap, atau pemulihan pada langkah berikutnya dapat digantung.

    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. Kembalikan objek Anda di bawah skema baru.

    Ini mengubah setiap objek yang dicadangkan ke skema v1.5 (v1beta2) dan menerapkannya kembali.

    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. Verifikasi hasilnya.

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

    Contoh output adalah sebagai berikut.

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

    Konfirmasikan objek Anda ada dan tidak ada daftar v1alpha1 CRD:

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

    storedVersionsOutput harus berisi hanya v1beta2 (atau v1beta1 danv1beta2), tidak pernahv1alpha1. Bandingkan objek yang dipulihkan dengan file $BACKUP_DIR untuk mengonfirmasi bahwa nilai konfigurasi Anda tidak berubah.