View a markdown version of this page

Personnalisez les modèles de lancement d'Amazon EKS - AWS Batch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Personnalisez les modèles de lancement d'Amazon EKS

AWS Batch sur Amazon EKS prend en charge les modèles de lancement. Les fonctionnalités de votre modèle de lancement sont soumises à des contraintes.

Important
  • Pour les AMI EKS AL2, AWS Batch s'exécute/etc/eks/bootstrap.sh. Ne l'exécutez pas /etc/eks/bootstrap.sh dans votre modèle ou vos cloud-init user-data scripts de lancement. Vous pouvez ajouter des paramètres supplémentaires en plus du --kubelet-extra-args paramètre du fichier bootstrap.sh. Pour ce faire, définissez la AWS_BATCH_KUBELET_EXTRA_ARGS variable dans le /etc/aws-batch/batch.config fichier. Consultez l'exemple suivant pour plus de détails.

  • Pour EKS AL2023, AWS Batch utilise le NodeConfigSpec from EKS pour que les instances rejoignent le cluster EKS. AWS Batch est ClusterDetails renseigné NodeConfigSpec pour le cluster EKS et vous n'avez pas besoin de les spécifier.

Note

Nous vous recommandons de ne définir aucun des NodeConfigSpec paramètres suivants dans le modèle de lancement, car AWS Batch cela remplacerait vos valeurs. Pour de plus amples informations, veuillez consulter Responsabilité partagée des Kubernetes nœuds.

  • Taints

  • Cluster Name

  • apiServerEndpoint

  • certificatAuthority

  • CIDR

  • Ne créez pas d'étiquettes avec le préfixe batch.amazonaws.com/

Note

Si le modèle de lancement est modifié après avoir CreateComputeEnvironment été appelé, UpdateComputeEnvironment il doit être appelé pour évaluer la version du modèle de lancement à remplacer.

Ajouter des arguments supplémentaires à kubelet

AWS Batch prend en charge l'ajout d'arguments supplémentaires à la kubelet commande. Pour la liste des paramètres pris en charge, consultez kubelet la Kubernetes documentation. Dans l'exemple suivant, pour les AMI EKS AL2, --node-labels mylabel=helloworld est ajouté à la ligne de kubelet commande.

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==--

Pour les AMI EKS AL2023, le format de fichier est YAML. Pour la liste des paramètres pris en charge, consultez NodeConfigSpec la Kubernetes documentation. Dans l'exemple suivant, pour les AMI EKS AL2023, --node-labels mylabel=helloworld est ajouté à la ligne de kubelet commande.

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==--

Configurer le moteur d'exécution du conteneur

Vous pouvez utiliser la variable d' AWS Batch CONTAINER_RUNTIMEenvironnement pour configurer l'exécution du conteneur sur un nœud géré. L'exemple suivant définit le runtime du conteneur sur containerd when bootstrap.sh runs. Pour plus d'informations, consultez containerd la Kubernetes documentation.

Si vous utilisez une EKS_AL2023_NVIDIA AMI EKS_AL2023 ou une optimisation, vous n'avez pas besoin de spécifier le moteur d'exécution du conteneur car seul containerd est pris en charge.

Note

La variable d'CONTAINER_RUNTIMEenvironnement est équivalente à l'--container-runtimeoption debootstrap.sh. Pour plus d'informations, consultez Options la Kubernetes documentation.

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==--

Monter un volume Amazon EFS

Vous pouvez utiliser des modèles de lancement pour monter des volumes sur le nœud. Dans l'exemple suivant, les runcmd paramètres cloud-config packages et sont utilisés. Pour plus d'informations, consultez les exemples de configuration Cloud dans la cloud-init documentation.

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==--

Pour utiliser ce volume dans la tâche, il doit être ajouté dans le paramètre EKSProperties à. RegisterJobDefinition L'exemple suivant représente une grande partie de la définition du poste.

{ "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" } } ] } } }

Dans le nœud, le volume Amazon EFS est monté dans le /mnt/efs répertoire. Dans le conteneur de la tâche Amazon EKS, le volume est monté dans le /efs répertoire.

Prise en charge d’IPv6

AWS Batch prend en charge les clusters Amazon EKS dotés d'adresses IPv6. Aucune personnalisation n'est requise pour le AWS Batch support. Toutefois, avant de commencer, nous vous recommandons de consulter les considérations et les conditions décrites dans la section Attribution d'adresses IPv6 aux espaces et aux services du Guide de l'utilisateur Amazon EKS.