View a markdown version of this page

Atualize o complemento de governança de tarefas - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Atualize o complemento de governança de tarefas

Use esta seção para atualizar o complemento Amazon EKS de governança de HyperPod tarefas entre as versões. Cada subseção fornece procedimentos específicos da versão para atualizar seu complemento e, ao mesmo tempo, preservar sua configuração existente.

Atualize da v1.3.x para a v1.5

A forma recomendada de atualizar da v1.3.x para a v1.5 é a opção de atualização no HyperPod console SageMaker AI, que migra os CRDs Kueue automaticamente. Use o procedimento manual nesta seção somente se você não puder usar o console.

Um direto aws eks update-addon da v1.3.x para a v1.5 falha porque a v1.3.x armazena algumas definições de recursos personalizados (CRDs) do Kueue na versão da API, que a v1.5 remove: v1alpha1

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

Esse procedimento faz backup de seus objetos Kueue e limpa a versão antiga armazenada. Em seguida, ele atualiza o complemento e restaura seus objetos sob o novo esquema.

Impacto e cronograma dos dados

Esse procedimento exclui e recria seus objetos de recursos personalizados do Kueue (ClusterQueues,, LocalQueues ResourceFlavors, Topologias e objetos relacionados). Ele faz o backup deles primeiro e os restaura, para que nenhuma configuração seja perdida. Ele não exclui nenhum namespace, não exclui nenhum CRD e não altera nenhuma SageMaker IA ComputeQuota ou registro. ClusterSchedulerConfig

Execute isso quando nenhuma carga de trabalho nova precisar ser enviada. A execução de pods geralmente não é interrompida, mas recomendamos não depender de cargas de trabalho ativas durante a migração. Novas cargas de trabalho não podem ser agendadas até que o procedimento seja concluído. Execute em um cluster por vez.

Pré-requisitos

Antes de começar, você deve ter o seguinte:

  • kubectlconfigurado para o cluster Amazon EKS de destino com acesso de administrador de cluster

  • O AWS CLI configurado para a conta e a região do cluster

  • jq instalada

  • O complemento está atualmente na v1.3.x com status ou ACTIVE DEGRADED

Por toda parte, region substitua por sua região e cluster-name pelo nome do seu cluster Amazon EKS.

Para atualizar o complemento de v1.3.x para v1.5, conclua as seguintes etapas:

  1. Confirme a versão atual do complemento e defina um diretório de trabalho.

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

    Confirme se a saída começa comv1.3.. Em seguida, BACKUP_DIR defina como um caminho absoluto em um diretório gravável e crie-o. As etapas posteriores são lidas e gravadas nessa variável, portanto, execute todas as etapas na mesma sessão do shell.

    export BACKUP_DIR=/absolute/path/to/backup-dir mkdir -p "$BACKUP_DIR"
  2. Faça backup de todos os recursos personalizados do Kueue em arquivos locais.

    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
    Verifique o backup antes de continuar

    Confirme se o diretório de backup contém um arquivo JSON para cada recurso personalizado no comando anterior e se as contagens de objetos na saída do comando correspondem às do cluster. Não prossiga se algum arquivo estiver ausente ou vazio.

  3. Exclua os objetos de backup e limpe a versão antiga armazenada de cada CRD.

    Isso remove a entrada v1alpha1 (ouv1beta1) status.storedVersions para que os CRDs v1.5 possam ser instalados. Os objetos estão seguros em seu backup e são restaurados em uma etapa posterior.

    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
    Sobre --all-namespaces e --wait=false

    --all-namespacesaqui seleciona recursos personalizados em todos os namespaces para excluir; ele não exclui nenhum namespace. --wait=falseevita o bloqueio nos finalizadores. A atualização do complemento na próxima etapa os resolve.

  4. Atualize o complemento para a 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

    Espere até que o status sejaACTIVE:

    aws eks describe-addon --region region --cluster-name cluster-name \ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.status' --output text
  5. Aguarde até que a nova instalação seja resolvida antes de restaurar.

    Não restaure imediatamente após os relatórios ACTIVE complementares. Aguarde até que o controlador, seu webhook e os trabalhos de pós-instalação estejam prontos, ou a restauração na próxima etapa poderá ser interrompida.

    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. Restaure seus objetos sob o novo esquema.

    Isso transforma cada objeto de backup no esquema v1.5 (v1beta2) e o reaplica.

    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. Verifique o resultado.

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

    Veja abaixo um exemplo de saída.

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

    Confirme se seus objetos estão presentes e se nenhum CRD ainda está v1alpha1 listado:

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

    A storedVersions saída deve conter somente v1beta2 (ou v1beta1 ev1beta2), nuncav1alpha1. Compare os objetos restaurados com os arquivos em $BACKUP_DIR para confirmar que seus valores de configuração permanecem inalterados.