翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
タスクガバナンスアドオンのアップグレード
このセクションを使用して、バージョン間で HyperPod タスクガバナンス Amazon EKS アドオンをアップグレードします。各サブセクションには、既存の設定を保持しながらアドオンをアップグレードするためのバージョン固有の手順が記載されています。
v1.3.x から v1.5 へのアップグレード
v1.3.x から v1.5 にアップグレードする推奨方法は、Kueue CRDs を自動的に移行する SageMaker AI HyperPod コンソールのアップグレードオプションです。このセクションの手動手順は、 コンソールを使用できない場合にのみ使用します。
v1.3.x は v1alpha1 API バージョンにいくつかの Kueue カスタムリソース定義 (CRDs) を保存するため、v1.3.x aws eks update-addonから v1.5 への直接 は失敗します。これにより、v1.5 は以下を削除します。
CustomResourceDefinition.apiextensions.k8s.io "cohorts.kueue.x-k8s.io" is invalid: status.storedVersions[0]: Invalid value: "v1alpha1": missing from spec.versions
この手順では、Kueue オブジェクトをバックアップし、古いストアドバージョンをクリアします。次に、アドオンをアップグレードし、新しいスキーマでオブジェクトを復元します。
データへの影響とタイミング
この手順では、Kueue カスタムリソースオブジェクト (ClusterQueues、LocalQueues、ResourceFlavors、トポロジ、および関連オブジェクト) を削除して再作成します。最初にバックアップして復元するため、設定が失われることはありません。名前空間は削除されず、CRD も削除されず、SageMaker AI ComputeQuota または ClusterSchedulerConfig レコードも変更されません。
新しいワークロードを送信する必要がない場合は、これを実行します。実行中のポッドは通常中断されませんが、移行中はアクティブなワークロードに依存しないことをお勧めします。新しいワークロードは、手順が完了するまでスケジュールできません。一度に 1 つのクラスターに対して を実行します。
前提条件
作業を開始する前に、次の項目があることを確認します。
-
kubectlクラスター管理者アクセスを持つターゲット Amazon EKS クラスター用に設定された -
クラスターのアカウントとリージョン用に AWS CLI 設定された
-
jqのインストール -
アドオンは現在 v1.3.x で、ステータスは
ACTIVEまたは です。DEGRADED
全体で、region を自分のリージョンに置き換え、cluster-name を Amazon EKS クラスター名に置き換えます。
アドオンを v1.3.x から v1.5 にアップグレードするには、次の手順を実行します。
-
現在のアドオンバージョンを確認し、作業ディレクトリを設定します。
aws eks describe-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.addonVersion' --output text出力が で始まることを確認します
v1.3.。次に、書き込み可能なディレクトリの絶対パスBACKUP_DIRに設定し、作成します。後のステップでは、この変数に対して読み取りと書き込みを行うため、同じシェルセッションですべてのステップを実行します。export BACKUP_DIR=/absolute/path/to/backup-dirmkdir -p "$BACKUP_DIR" -
すべての Kueue カスタムリソースをローカルファイルにバックアップします。
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続行する前にバックアップを確認する
バックアップディレクトリに前述のコマンドの各カスタムリソースの JSON ファイルが含まれ、コマンド出力のオブジェクト数がクラスターのものと一致していることを確認します。ファイルが見つからない場合や空の場合は、続行しないでください。
-
バックアップされたオブジェクトを削除し、各 CRD から古い保存済みバージョンをクリアします。
これにより、 から
v1alpha1(またはv1beta1) エントリが削除されstatus.storedVersions、v1.5 CRDsをインストールできるようになります。オブジェクトはバックアップで安全であり、後のステップで復元されます。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--all-namespaces と --wait=false について
--all-namespacesここで、 は削除するすべての名前空間のカスタムリソースを選択します。名前空間は削除されません。 はファイナライザーのブロック--wait=falseを回避します。次のステップのアドオン更新によって解決されます。 -
アドオンを v1.5 に更新します。
aws eks update-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --addon-version v1.5.0-eksbuild.1 --resolve-conflicts OVERWRITEステータスが になるまで待ちます
ACTIVE。aws eks describe-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.status' --output text -
復元する前に、新しいインストールが確定するのを待ちます。
アドオンが を報告した直後に復元しないでください
ACTIVE。コントローラー、そのウェブフック、インストール後のジョブの準備が完了するのを待ちます。そうしないと、次のステップの復元がハングする可能性があります。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 -
新しいスキーマでオブジェクトを復元します。
これにより、バックアップされた各オブジェクトが v1.5 (
v1beta2) スキーマに変換され、再適用されます。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 -
結果を確認します。
aws eks describe-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.{version:addonVersion,status:status}'出力例は次のとおりです。
{ "version": "v1.5.0-eksbuild.1", "status": "ACTIVE" }オブジェクトが存在し、CRD がまだ をリストしていないことを確認します
v1alpha1。kubectl get clusterqueues kubectl get localqueues --all-namespaces kubectl get crd clusterqueues.kueue.x-k8s.io -o jsonpath='{.status.storedVersions}'storedVersions出力にはv1beta2(またはv1beta1とv1beta2) のみを含める必要があり、 を含めることはできませんv1alpha1。復元されたオブジェクトと のファイルを比較$BACKUP_DIRして、設定値が変更されていないことを確認します。