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.
Tópicos
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.shAWS_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.
Tópicos
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
é adicionado à linha de comando --node-labels mylabel=helloworld
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
nota
A variável de ambiente CONTAINER_RUNTIME
é equivalente à opção --container-runtime
de bootstrap.sh
. Para obter mais informações, consulte Options
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
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