Ambientes EKS computacionais da Amazon - 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á.

Ambientes EKS computacionais da Amazon

Começando a usar AWS Batch no Amazon EKSfornece um pequeno guia para a criação de ambientes EKS computacionais. Esta seção fornece mais detalhes sobre os ambientes EKS computacionais da Amazon.

AMISeleção padrão

Ao criar um ambiente EKS computacional da Amazon, você não precisa especificar uma Amazon Machine Image (AMI). AWS Batch seleciona uma Amazon EKS otimizada AMI com base na Kubernetes versão e nos tipos de instância especificados em sua CreateComputeEnvironmentsolicitação. Em geral, recomendamos que você use a AMI seleção padrão. Para obter mais informações sobre Amazon EKS otimizadoAMIs, consulte Amazon Linux EKS otimizado para Amazon AMIs no Guia EKS do usuário da Amazon.

Execute o comando a seguir para ver qual AMI tipo AWS Batch está selecionado para seu ambiente EKS computacional da Amazon. O exemplo a seguir não é de GPU instância.

# compute CE example: indicates Batch has chosen the AL2 x86 or ARM EKS 1.29 AMI, depending on instance types $ aws batch describe-compute-environments --compute-environments My-Eks-CE1 \ | jq '.computeEnvironments[].computeResources.ec2Configuration' [ { "imageType": "EKS_AL2", "imageKubernetesVersion": "1.29" } ]

O exemplo a seguir é um tipo de GPU instância.

# GPU CE example: indicates Batch has choosen the AL2 x86 EKS Accelerated 1.29 AMI $ aws batch describe-compute-environments --compute-environments My-Eks-GPU-CE \ | jq '.computeEnvironments[].computeResources.ec2Configuration' [ { "imageType": "EKS_AL2_NVIDIA", "imageKubernetesVersion": "1.29" } ]

Versões do Kubernetes com suporte

AWS Batch na Amazon EKS atualmente oferece suporte às seguintes Kubernetes versões:

  • 1.30

  • 1.29

  • 1.28

  • 1.27

  • 1.26

  • 1.25

  • 1.24

  • 1.23

Talvez você veja uma mensagem de erro semelhante à seguinte ao usar a CreateComputeEnvironment API operação ou UpdateComputeEnvironment API operação para criar ou atualizar um ambiente computacional. Esse problema ocorre se você especificar uma versão Kubernetes não suportada em EC2Configuration.

At least one imageKubernetesVersion in EC2Configuration is not supported.

Para resolver esse problema, exclua o ambiente de computação e recrie-o com uma versão Kubernetes compatível.

Você pode realizar uma pequena atualização de versão no seu EKS cluster da Amazon. Por exemplo, você pode atualizar o cluster de 1.xx para, 1.yy mesmo que a versão secundária não seja compatível.

No entanto, o status do ambiente de computação pode mudar para INVALID depois de uma atualização de versão principal. Por exemplo, se você realizar uma atualização de versão principal de 1.xx para 2.yy. Se a versão principal não for compatível com AWS Batch, você verá uma mensagem de erro semelhante à seguinte.

reason=CLIENT_ERROR - ... EKS Cluster version [2.yy] is unsupported

Atualizando a versão Kubernetes do ambiente de computação

Com AWS Batch, você pode atualizar a Kubernetes versão de um ambiente computacional para oferecer suporte às atualizações de EKS cluster da Amazon. A Kubernetes versão de um ambiente computacional é a EKS AMI versão da Amazon para os Kubernetes nós que são AWS Batch iniciados para executar trabalhos. Você pode realizar uma atualização de Kubernetes versão em seus EKS nós da Amazon antes ou depois de atualizar a versão do plano de controle do EKS cluster da Amazon. Recomendamos que você atualize os nós após atualizar o plano de controle. Para obter mais informações, consulte Atualização de uma Kubernetes versão de EKS cluster da Amazon no Guia EKS do usuário da Amazon.

Para atualizar a Kubernetes versão de um ambiente computacional, use a UpdateComputeEnvironmentAPIoperação.

$ aws batch update-compute-environment \ --compute-environment <compute-environment-name> \ --compute-resources \ 'ec2Configuration=[{imageType=EKS_AL2,imageKubernetesVersion=1.23}]'

Responsabilidade compartilhada dos nós Kubernetes

A manutenção dos ambientes de computação é uma responsabilidade compartilhada.

  • Não altere nem remova AWS Batch nós, rótulos, manchas, namespaces, modelos de lançamento ou grupos de escalonamento automático. Não adicione manchas aos nós AWS Batch gerenciados. Se você fizer alguma dessas alterações, seu ambiente de computação não poderá ser compatível e ocorrerão falhas, incluindo instâncias ociosas.

  • Não direcione seus pods para nós AWS Batch gerenciados. Se você direcionar seus pods para os nós gerenciados, ocorrerão falhas no escalonamento e filas de trabalhos paralisadas. Execute cargas de trabalho que não são usadas AWS Batch em nós autogerenciados ou grupos de nós gerenciados. Para obter mais informações, consulte Grupos de nós gerenciados no Guia EKS do usuário da Amazon.

  • Você pode DaemonSet direcionar um para ser executado em nós AWS Batch gerenciados. Para obter mais informações, consulte Executando DaemonSet em nós não AWS Batch gerenciados.

AWS Batch não atualiza automaticamente o ambiente AMIs computacional. É sua responsabilidade atualizá-las. Execute o comando a seguir para atualizá-lo AMIs para a AMI versão mais recente.

$ aws batch update-compute-environment \ --compute-environment <compute-environment-name> \ --compute-resources 'updateToLatestImageVersion=true'

AWS Batch não atualiza automaticamente a Kubernetes versão. Execute o comando a seguir para atualizar a Kubernetes versão do ambiente do seu computador para 1.23.

$ aws batch update-compute-environment \ --compute-environment <compute-environment-name> \ --compute-resources \ 'ec2Configuration=[{imageType=EKS_AL2,imageKubernetesVersion=1.23}]'

Ao atualizar para uma versão mais recente AMI ou para a Kubernetes versão, você pode especificar se os trabalhos devem ser encerrados quando eles forem atualizados (terminateJobsOnUpdate) e quanto tempo esperar até que uma instância seja substituída se os trabalhos em execução não forem concluídos (jobExecutionTimeoutMinutes.) Para obter mais informações, consulte Criação de um ambiente de computação e a política de atualização de infraestrutura (UpdatePolicy) definida na UpdateComputeEnvironmentAPIoperação.

Executando DaemonSet em nós não AWS Batch gerenciados

AWS Batch define manchas nos Kubernetes nós AWS Batch gerenciados. Você pode DaemonSet direcionar um para ser executado em nós AWS Batch gerenciados com o seguintetolerations.

tolerations: - key: "batch.amazonaws.com/batch-node" operator: "Exists"

Outra maneira de fazer isso é com o tolerations a seguir.

tolerations: - key: "batch.amazonaws.com/batch-node" operator: "Exists" effect: "NoSchedule" - key: "batch.amazonaws.com/batch-node" operator: "Exists" effect: "NoExecute"

Como personalizar nós gerenciados com modelos de execução

AWS Batch na Amazon EKS oferece suporte a modelos de lançamento. Há restrições sobre o que seu modelo de lançamento pode fazer.

Importante

AWS Batch corre/etc/eks/bootstrap.sh. Não execute /etc/eks/bootstrap.sh em seu modelo de lançamento ou scripts cloud-init user-data. Você pode adicionar outros parâmetros além do parâmetro --kubelet-extra-args ao bootstrap.sh. Para fazer isso, defina a variável AWS_BATCH_KUBELET_EXTRA_ARGS no arquivo /etc/aws-batch/batch.config. Consulte o código a seguir para ver um exemplo.

nota

Se o modelo de lançamento for alterado após CreateComputeEnvironmentser chamado, UpdateComputeEnvironmentdeverá ser chamado para avaliar a versão do modelo de lançamento para substituição.

Adicionando argumentos kubelet extras

AWS Batch suporta a adição de argumentos extras ao kubelet comando. Para obter a lista completa de parâmetros compatíveis, consulte kubelet na documentação Kubernetes. No exemplo a seguir, --node-labels mylabel=helloworld é adicionado à linha de comando kubelet.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash mkdir -p /etc/aws-batch echo AWS_BATCH_KUBELET_EXTRA_ARGS=\"--node-labels mylabel=helloworld\" >> /etc/aws-batch/batch.config --==MYBOUNDARY==--

Configurando o tempo de execução do contêiner

Você pode usar a variável de ambiente AWS Batch CONTAINER_RUNTIME para configurar o tempo de execução do contêiner em um nó gerenciado. O exemplo a seguir define o tempo de execução do contêiner para containerd quando bootstrap.sh for executado. Para obter mais informações, consulte containerd na documentação Kubernetes.

nota

A variável de ambiente CONTAINER_RUNTIME é equivalente à opção --container-runtime de bootstrap.sh. Para obter mais informações, consulte Options na documentação Kubernetes.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash mkdir -p /etc/aws-batch echo CONTAINER_RUNTIME=containerd >> /etc/aws-batch/batch.config --==MYBOUNDARY==--

Montando um EFS volume da Amazon

Você pode usar modelos de execução para montar volumes no nó. No exemplo a seguir, as configurações cloud-config packages e runcmd são usadas. Para obter mais informações, consulte Exemplos de configuração de Nuvem na documentação cloud-init.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" packages: - amazon-efs-utils runcmd: - file_system_id_01=fs-abcdef123 - efs_directory=/mnt/efs - mkdir -p ${efs_directory} - echo "${file_system_id_01}:/ ${efs_directory} efs _netdev,noresvport,tls,iam 0 0" >> /etc/fstab - mount -t efs -o tls ${file_system_id_01}:/ ${efs_directory} --==MYBOUNDARY==--

Para usar esse volume na tarefa, ele deve ser adicionado ao eksPropertiesparâmetro RegisterJobDefinitiona. O exemplo a seguir é uma grande parte da definição do trabalho.

{ "jobDefinitionName": "MyJobOnEks_EFS", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["ls", "-la", "/efs"], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } }, "volumeMounts": [ { "name": "efs-volume", "mountPath": "/efs" } ] } ], "volumes": [ { "name": "efs-volume", "hostPath": { "path": "/mnt/efs" } } ] } } }

No nó, o EFS volume da Amazon é montado no /mnt/efs diretório. No contêiner do EKS trabalho da Amazon, o volume é montado no /efs diretório.

IPv6apoio

AWS Batch suporta EKS clusters da Amazon que têm IPv6 endereços. Nenhuma personalização é necessária para AWS Batch suporte. No entanto, antes de começar, recomendamos que você analise as considerações e condições descritas em Atribuição de IPv6 endereços a pods e serviços no Guia do usuário da Amazon. EKS