Personalize os modelos de lançamento do Amazon EKS
AWS Batch no Amazon EKS oferece suporte a modelos de lançamento. Há restrições sobre o que seu modelo de lançamento pode fazer.
Importante
Para AMIs do EKS AL2, AWS Batch executa
/etc/eks/bootstrap.sh. Não execute/etc/eks/bootstrap.shem seu modelo de lançamento ou scripts cloud-init user-data. Você pode adicionar outros parâmetros além do parâmetro--kubelet-extra-argsao bootstrap.sh. Para fazer isso, defina a variável AWS_BATCH_KUBELET_EXTRA_ARGSno arquivo/etc/aws-batch/batch.config. Consulte o código a seguir para ver um exemplo.-
Para EKS AL2023, AWS Batch usa NodeConfigSpec
do EKS para fazer com que as instâncias se juntem ao cluster EKS. AWS Batch preenche ClusterDetails em NodeConfigSpec para o cluster EKS e você não precisa especificá-los.
nota
Recomendamos que você não defina nenhuma das configurações NodeConfigSpec
TaintsCluster NameapiServerEndpointcertificatAuthorityCIDRNão crie rótulos com o prefixo
batch.amazonaws.com/
nota
Se o modelo de execução for alterado após a chamada de CreateComputeEnvironment, UpdateComputeEnvironment deverá ser chamado para avaliar a versão do modelo de execução para substituição.
Tópicos
Adicionar argumentos extras de kubelet
AWS Batch suporta a adição de argumentos extras ao comando kubelet. Para obter a lista completa de parâmetros compatíveis, consulte kubelet é adicionado à linha de comando --node-labels
mylabel=helloworldkubelet.
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==--
Para AMIs EKS AL2023, o formato do arquivo é YAML. Para obter a lista completa de parâmetros compatíveis, consulte NodeConfigSpec é adicionado à linha de comando --node-labels
mylabel=helloworldkubelet.
MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: application/node.eks.aws apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: kubelet: flags: - --node-labels=mylabel=helloworld--==MYBOUNDARY==--
Configurar o runtime do contêiner
Você pode usar a variável de ambiente AWS Batch CONTAINER_RUNTIME para configurar o runtime do contêiner em um nó gerenciado. O exemplo a seguir define o runtime do contêiner para containerd quando bootstrap.sh for executado. Para obter mais informações, consulte containerd
Se você estiver usando uma AMI otimizada EKS_AL2023 ou EKS_AL2023_NVIDIA, não precisará especificar o runtime do contêiner, pois somente containerd é compatível.
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==--
Montar um volume do Amazon EFS
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 no parâmetro EksProperties para RegisterJobDefinition. 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 volume do Amazon EFS é montado no diretório /mnt/efs. No contêiner do trabalho do Amazon EKS, o volume é montado no diretório /efs.
Suporte a IPv6
AWS Batch é compatível com clusters do Amazon EKS que têm endereços IPv6. Nenhuma personalização é necessária para suporte AWS Batch. No entanto, antes de começar, recomendamos que você analise as considerações e condições descritas em Atribuição de endereços IPv6 para pods e serviços no Guia do usuário do Amazon EKS.