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.5 ke v1.6

Versi v1.6.0-eksbuild.1 paket Kueue v0.19.2. Anda dapat meningkatkan langsung dari v1.5 denganaws eks update-addon. Upgrade ini tidak memigrasikan versi penyimpanan definisi sumber daya kustom (CRD), jadi Anda tidak perlu membuat cadangan atau membuat ulang objek Kueue apa pun.

Untuk memutakhirkan add-on ke v1.6 melalui antarmuka add-on Amazon EKS, jalankan perintah berikut. Ganti region dengan Wilayah Anda dan cluster-name dengan nama cluster Amazon EKS Anda.

aws eks update-addon --region region --cluster-name cluster-name \ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --addon-version v1.6.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
Topology-aware penjadwalan validasi ukuran irisan

Dimulai dengan v1.6 (Kueue v0.19.2), tata kelola tugas memvalidasi ukuran irisan penjadwalan yang sadar topologi (jumlah pod yang dikelompokkan bersama untuk penempatan) saat Anda mengirimkan pekerjaan. Jika Anda mengirimkan pekerjaan yang menetapkan kueue.x-k8s.io/podset-slice-size anotasi ke nilai kurang dari1, tata kelola tugas menolak pekerjaan dengan kesalahan seperti berikut:

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

Versi sebelumnya tidak memvalidasi nilai ini. Sebelum Anda memutakhirkan, perbarui templat pekerjaan apa pun yang menggunakan irisan penjadwalan sadar topologi untuk disetel ke atau lebih besar. kueue.x-k8s.io/podset-slice-size 1

Tingkatkan dari v1.3.x ke v1.5 atau yang lebih baru

Cara yang disarankan untuk meningkatkan dari v1.3.x 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. Prosedur ini mendukung v1.5 dan yang lebih baru sebagai versi target.

Langsung aws eks update-addon dari v1.3.x ke v1.5 atau yang lebih baru 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 Wilayah

  • 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 atau yang lebih baru 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 versi target Anda (v1.5.0-eksbuild.1 atau yang lebih baru).

    Ganti target-version dengan versi add-on target, misalnya v1.5.0-eksbuild.1 atauv1.6.0-eksbuild.1.

    aws eks update-addon --region region --cluster-name cluster-name \ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --addon-version target-version --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 atau later (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}'

    Output contoh adalah sebagai berikut (versionkecocokan Anda dengan yang target-version Anda tetapkan pada langkah 4).

    { "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.