

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
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-upgrade"></a>

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.

**Topics**
+ [Tingkatkan dari v1.3.x ke v1.5](#hp-eks-task-governance-upgrade-v13-to-v15)

## Tingkatkan dari v1.3.x ke v1.5
<a name="hp-eks-task-governance-upgrade-v13-to-v15"></a>

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
<a name="hp-eks-task-governance-upgrade-v13-to-v15-prerequisites"></a>

Sebelum Anda mulai, pastikan Anda memiliki yang berikut:
+ `kubectl`dikonfigurasi untuk cluster Amazon EKS target dengan akses cluster-administrator
+  AWS CLI Konfigurasi untuk akun cluster dan Region
+ `jq`dipasang
+ 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 dengan`v1.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"
   ```

1. **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.

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

   Ini menghapus entri `v1alpha1` (atau`v1beta1`) 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-namespaces`di sini memilih sumber daya khusus di semua ruang nama untuk dihapus; itu tidak menghapus namespace apa pun. `--wait=false`menghindari pemblokiran pada finalizer. Pembaruan add-on pada langkah berikutnya menyelesaikannya.

1. **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 statusnya`ACTIVE`:

   ```
   aws eks describe-addon --region {{region}} --cluster-name {{cluster-name}} \
     --addon-name amazon-sagemaker-hyperpod-taskgovernance \
     --query 'addon.status' --output text
   ```

1. **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
   ```

1. **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
   ```

1. **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}'
   ```

   `storedVersions`Output harus berisi hanya `v1beta2` (atau `v1beta1` dan`v1beta2`), tidak pernah`v1alpha1`. Bandingkan objek yang dipulihkan dengan file `$BACKUP_DIR` untuk mengonfirmasi bahwa nilai konfigurasi Anda tidak berubah.