Trabalhos paralelos de vários nós na Amazon EKS - AWS Batch

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á.

Trabalhos paralelos de vários nós na Amazon EKS

Você pode usar o AWS Batch Amazon Elastic Kubernetes Service para executar trabalhos paralelos () de vários nós MNP (também conhecidos como agendamento de grupos) em seus clusters gerenciados. Kubernetes Essa opção é comumente usada para trabalhos grandes, fortemente acoplados e de alto desempenho que não podem ser executados em uma única instância do Amazon Elastic Compute Cloud. Para obter mais informações, consulte Tarefas paralelas de vários nós.

Você pode usar esse recurso para executar aplicativos de computação de alto desempenho EKS Kubernetes gerenciados específicos da Amazon, treinamento em modelos de linguagem extensos e outros trabalhos de Inteligência Artificial (IA) /Aprendizado de Máquina (ML).

Executando MNP trabalhos

AWS Batch oferece suporte a MNP trabalhos no Amazon Elastic Container Service e na Amazon EKS usando a AmazonEC2. Veja a seguir mais detalhes sobre os parâmetros de instância e contêiner do recurso.

Cotas de instância para MNP na Amazon EKS

  • Até 1000 instâncias podem ser usadas para um único MNP trabalho.

  • Até 5.000 instâncias podem se juntar a um único EKS cluster da Amazon.

  • Até 5 ambientes computacionais podem ser agrupados e anexados a uma fila de trabalhos.

Por exemplo, você pode escalar até 5 ambientes computacionais em cluster em uma fila de trabalhos e 1000 instâncias em cada ambiente computacional.

Além dos parâmetros da instância, é importante observar que você não pode usar o Fargate para MNP trabalhos por meio de nenhum dos serviços.

Você pode usar somente um tipo de instância em cada MNP trabalho. Você pode alterar o tipo de instância atualizando o ambiente computacional ou definindo um novo ambiente computacional. Você também pode especificar o tipo de instância e fornecer os requisitos de v CPU e memória ao criar a definição do trabalho.

Cotas de contêineres para MNP na Amazon EKS

  • Uma tarefa paralela de vários nós suporta um pod por nó.

  • Até 10 contêineres (ou 10 contêineres init). Para obter mais informações, consulte Init Containers na documentação do Kubernetes.) em cada pod.

  • Intervalos de até 5 nós em cada MNP trabalho.

  • Até 10 imagens de contêiner distintas em cada intervalo de nós.

Por exemplo, você pode executar no máximo 10.000 contêineres em um único MNP trabalho que contém 5 intervalos de nós e um total de 50 imagens exclusivas.

Executando MNP trabalhos em uma Amazon privada VPC e em um EKS cluster da Amazon

MNPos trabalhos podem ser executados em qualquer EKS cluster da Amazon, independentemente de ter Internet pública ou não. Ao usar um EKS cluster da Amazon com apenas acesso à rede privada, certifique-se de que ele AWS Batch possa acessar o plano de EKS controle da Amazon e o Kubernetes API servidor gerenciado. Você pode conceder o acesso necessário por meio dos endpoints da Amazon Virtual Private Cloud. Para obter mais informações, consulte Configurar um serviço de endpoint.

Os Pods de EKS cluster da Amazon não podem baixar uma imagem de uma fonte pública, pois a privada VPC não tem acesso à Internet. Seu EKS cluster da Amazon deve extrair imagens de um registro de contêineres que esteja dentro da sua AmazonVPC. Você pode criar uma (AmazonECR) em sua Amazon VPC e copiar imagens de contêiner nela para acesso aos seus nós.

Você também pode criar uma regra de cache pull through com a AmazonECR. Depois que uma regra de cache pull through é criada para um registro público externo, você pode simplesmente extrair uma imagem desse registro público externo usando seu registro ECR privado da AmazonURI. Em seguida, a Amazon ECR cria um repositório e armazena a imagem em cache. Quando uma imagem em cache é extraída usando o registro ECR privado da AmazonURI, a Amazon ECR verifica o registro remoto para ver se há uma nova versão da imagem e atualizará seu registro privado até uma vez a cada 24 horas. Para obter mais informações, consulte Criação de uma regra de cache pull through na Amazon ECR.

Para obter mais informações sobre esse tópico, consulte Introdução aos AWS Batch Amazon EKS Private Clusters.

Notificação de erro

Se seus MNP trabalhos estiverem bloqueados, você poderá receber notificações por meio do AWS Management Console e da Amazon EventBridge. Por exemplo, se um MNP trabalho estiver preso no início da fila, você poderá ser notificado sobre o problema junto com informações sobre o que o causou, para que você possa tomar medidas imediatas para desbloquear sua fila de trabalhos. Opcionalmente, você pode encerrar automaticamente o MNP trabalho se nenhuma ação for tomada em um período de tempo distinto, que pode ser definido no modelo de fila de trabalhos. Para obter mais informações, consulte Eventos bloqueados da fila de trabalhos

Crie uma definição de EKS MNP trabalho na Amazon

Para definir e executar MNP trabalhos na AmazonEKS, há novos parâmetros nas SubmitJobAPIoperações RegisterJobDefinitione.

Essas ações podem ser definidas por meio de API operações e do AWS Management Console.

Registre a carga útil da solicitação de definição de EKS MNP trabalho da Amazon

O exemplo a seguir ilustra como você pode registrar uma definição de EKS MNP trabalho na Amazon com dois nós.

{ "jobDefinitionName": "MyEksMnpJobDefinition", "type": "multinode", "nodeProperties": { "numNodes": 2, "mainNode": 0, "nodeRangeProperties": [ { "targetNodes" : "0:", "eksProperties": { "podProperties": { "containers": [ { "name": "test-eks-container-1", "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": [ "sleep", "60" ], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } }, "securityContext":{ "runAsUser":1000, "runAsGroup":3000, "privileged":true, "readOnlyRootFilesystem":true, "runAsNonRoot":true } } ], "initContainers": [ { "name":"init-ekscontainer", "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": [ "echo", "helloWorld" ], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } } } ], "metadata": { "labels": { "environment" : "test" } } } } } ] } }

Para registrar a definição de tarefa usando o AWS CLI, copie a definição em um arquivo local chamado MyEksMnpJobDefinition.json e execute o comando a seguir.

aws batch register-job-definition --cli-input-json file://MyEksMnpJobDefinition.json

Você receberá a seguinte JSON resposta.

{ "jobDefinitionName": "MyEksMnpJobDefinition", "jobDefinitionArn": "arn:aws:batch:us-east-1:0123456789:job-definition/MyEksMnpJobDefinition:1", "revision": 1 }

Envie a EKS MNP vaga na Amazon

Para enviar um trabalho usando a definição de trabalho registrado, digite o comando a seguir. Substitua o valor de < EKS JOB _ _ QUEUE _ NAME > pelo nome ou por uma fila ARN de trabalhos preexistente associada a um ambiente EKS computacional da Amazon.

aws batch submit-job --job-queue <EKS_JOB_QUEUE_NAME> \ --job-definition MyEksMnpJobDefinition \ --job-name myFirstEksMnpJob

Você receberá a seguinte JSON resposta.

{ "jobArn": "arn:aws:batch:region:account:job/9b979cce-9da0-446d-90e2-ffa16d52af68", "jobName": "myFirstEksMnpJob", "jobId": "<JOB_ID>" }

Você pode verificar o status do trabalho usando o retornado jobId com o comando a seguir.

aws batch describe-jobs --jobs <JOB_ID>

Substituir uma definição de EKS MNP trabalho da Amazon

Opcionalmente, você pode substituir os detalhes da definição do cargo (como alterar o tamanho do cargo ou os detalhes do MNP cargo secundário). Veja a seguir um exemplo de carga útil de JSON solicitação para enviar um MNP trabalho de cinco nós e alterações no comando do test-eks-container-1 contêiner.

{ "numNodes": 5, "nodePropertyOverrides": [ { "targetNodes": "0:", "eksPropertiesOverride": { "podProperties": { "containers": [ { "name": "test-eks-container-1", "command": [ "sleep", "150" ] } ] } } } ] }

Envie a EKS MNP vaga na Amazon

Em seguida, envie um trabalho com essas substituições, salve o exemplo em um arquivo local, eks-mnp-job-nodeoverride.json, e use o AWS CLI para enviar o trabalho com as substituições.

aws batch submit-job --job-queue <EKS_JOB_QUEUE_NAME> \ --job-definition MyEksMnpJobDefinition \ --node-overrides file://./eks-mnp-job-nodeoverride.json \ --job-name fiveLongSleeps