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
-
jqinstalada -
O complemento está atualmente na v1.3.x com status ou
ACTIVEDEGRADED
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:
-
Confirme a versão atual do complemento e defina um diretório de trabalho.
aws eks describe-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.addonVersion' --output textConfirme se a saída começa com
v1.3.. Em seguida,BACKUP_DIRdefina 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-dirmkdir -p "$BACKUP_DIR" -
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)" doneVerifique 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.
-
Exclua os objetos de backup e limpe a versão antiga armazenada de cada CRD.
Isso remove a entrada
v1alpha1(ouv1beta1)status.storedVersionspara 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"]}}' doneSobre --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. -
Atualize o complemento para a 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 OVERWRITEEspere até que o status seja
ACTIVE:aws eks describe-addon --regionregion--cluster-namecluster-name\ --addon-name amazon-sagemaker-hyperpod-taskgovernance \ --query 'addon.status' --output text -
Aguarde até que a nova instalação seja resolvida antes de restaurar.
Não restaure imediatamente após os relatórios
ACTIVEcomplementares. 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=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 -
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 -
Verifique o resultado.
aws eks describe-addon --regionregion--cluster-namecluster-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á
v1alpha1listado:kubectl get clusterqueues kubectl get localqueues --all-namespaces kubectl get crd clusterqueues.kueue.x-k8s.io -o jsonpath='{.status.storedVersions}'A
storedVersionssaída deve conter somentev1beta2(ouv1beta1ev1beta2), nuncav1alpha1. Compare os objetos restaurados com os arquivos em$BACKUP_DIRpara confirmar que seus valores de configuração permanecem inalterados.