Entornos de EKS cómputo de Amazon - AWS Batch

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Entornos de EKS cómputo de Amazon

Cómo empezar con AWS Batch Amazon EKSproporciona una breve guía para crear entornos de EKS cómputo. En esta sección se proporcionan más detalles sobre los entornos de EKS cómputo de Amazon.

AMISelección predeterminada

Al crear un entorno EKS informático de Amazon, no es necesario especificar una Amazon Machine Image (AMI). AWS Batch selecciona un Amazon EKS optimizado en AMI función de los tipos de Kubernetes versión e instancia que se especifican en tu CreateComputeEnvironmentsolicitud. En general, le recomendamos que utilice la AMI selección predeterminada. Para obtener más información sobre Amazon EKS optimizadoAMIs, consulte Amazon Linux EKS optimizado AMIs en la Guía del EKS usuario de Amazon.

Ejecute el siguiente comando para ver qué AMI tipo AWS Batch está seleccionado para su entorno EKS informático de Amazon. El siguiente ejemplo es un tipo que no es de GPU instancia.

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

El siguiente ejemplo es un tipo de GPU instancia.

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

Versiones de Kubernetes compatibles

AWS Batch en Amazon EKS actualmente es compatible con las siguientes Kubernetes versiones:

  • 1.30

  • 1.29

  • 1.28

  • 1.27

  • 1.26

  • 1.25

  • 1.24

  • 1.23

Es posible que aparezca un mensaje de error similar al siguiente cuando utilice la CreateComputeEnvironment API operación o la UpdateComputeEnvironment API operación para crear o actualizar un entorno informático. Este problema se produce si especifica una versión de Kubernetes no compatible en EC2Configuration.

At least one imageKubernetesVersion in EC2Configuration is not supported.

Para resolver este problema, elimine el entorno de procesamiento y vuelva a crearlo con una versión de Kubernetes compatible.

Puedes realizar una actualización de versión menor en tu EKS clúster de Amazon. Por ejemplo, puede actualizar el clúster de 1.xx a 1.yy incluso si la versión secundaria no es compatible.

Sin embargo, es posible que el estado del entorno de computación cambie a INVALID después de una actualización de la versión principal. Por ejemplo, si realiza una actualización de una versión principal de 1.xx a 2.yy. Si la versión principal no es compatible con AWS Batch, aparecerá un mensaje de error similar al siguiente.

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

Actualización la versión de Kubernetes del entorno de computación

Con AWS Batch, puede actualizar la Kubernetes versión de un entorno informático para que sea compatible con las actualizaciones de los EKS clústeres de Amazon. La Kubernetes versión de un entorno de cómputo es la EKS AMI versión de Amazon para los Kubernetes nodos que se AWS Batch lanzan para ejecutar tareas. Puedes realizar una actualización de Kubernetes versión en sus EKS nodos de Amazon antes o después de actualizar la versión del plano de control del EKS clúster de Amazon. Le recomendamos que actualice los nodos después de actualizar el plano de control. Para obtener más información, consulta Cómo actualizar una Kubernetes versión de un EKS clúster de Amazon en la Guía del EKS usuario de Amazon.

Para actualizar la Kubernetes versión de un entorno informático, utilice la UpdateComputeEnvironmentAPIoperación.

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

Responsabilidad compartida de los nodos Kubernetes

El mantenimiento de los entornos de computación es una responsabilidad compartida.

  • No cambies ni elimines AWS Batch nodos, etiquetas, manchas, espacios de nombres, plantillas de lanzamiento ni grupos de escalado automático. No añada información contaminada a los nodos gestionados. AWS Batch Si realiza alguno de estos cambios, su entorno de computación no será compatible y se producirán errores, incluidas las instancias inactivas.

  • No dirija sus pods a los nodos AWS Batch gestionados. Si dirige sus pods a los nodos gestionados, se producirán problemas de escalado y las colas de trabajos se atascarán. Ejecuta cargas de trabajo que no se usen AWS Batch en nodos autogestionados o grupos de nodos gestionados. Para obtener más información, consulte Grupos de nodos gestionados en la Guía del EKS usuario de Amazon.

  • Puede seleccionar a DaemonSet para que se ejecute en nodos AWS Batch gestionados. Para obtener más información, consulte Ejecutar un DaemonSet nodo AWS Batch gestionado.

AWS Batch no actualiza automáticamente el entorno informáticoAMIs. Es su responsabilidad actualizarlas. Ejecute el siguiente comando para actualizar su AMI versión AMIs a la última.

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

AWS Batch no actualiza automáticamente la Kubernetes versión. Ejecute el siguiente comando para actualizar la Kubernetes versión del entorno de su ordenador a 1.23.

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

Al actualizar a una versión más reciente AMI o a una Kubernetes versión más reciente, puede especificar si desea finalizar los trabajos cuando se actualicen (terminateJobsOnUpdate) y cuánto tiempo esperar antes de reemplazar una instancia si los trabajos en ejecución no terminan (jobExecutionTimeoutMinutes.) Para obtener más información, consulte Actualizar entornos informáticos la política de actualización de infraestructura (UpdatePolicy) establecida en la UpdateComputeEnvironmentAPIoperación.

Ejecutar un DaemonSet nodo AWS Batch gestionado

AWS Batch perjudica a los Kubernetes nodos AWS Batch gestionados. Puede seleccionar a DaemonSet para que se ejecute en nodos AWS Batch gestionados con lo siguientetolerations.

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

Otra forma de hacerlo es con lo siguiente tolerations.

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

Personalización con plantillas de lanzamiento

AWS Batch en Amazon EKS admite plantillas de lanzamiento. Existen limitaciones en cuanto a lo que puede hacer su plantilla de lanzamiento.

importante

AWS Batch corre/etc/eks/bootstrap.sh. No ejecute /etc/eks/bootstrap.sh en su plantilla de lanzamiento ni en sus scripts cloud-init user-data. Puede añadir parámetros adicionales además del parámetro --kubelet-extra-args a bootstrap.sh. Para ello, defina la variable AWS_BATCH_KUBELET_EXTRA_ARGS en el archivo /etc/aws-batch/batch.config. Consulte el ejemplo siguiente para obtener información detallada.

nota

Si la plantilla de lanzamiento se cambia después de CreateComputeEnvironmentllamarla, UpdateComputeEnvironmenthay que llamarla para evaluar la versión de la plantilla de lanzamiento que se va a reemplazar.

Añadir argumentos adicionales kubelet

AWS Batch admite la adición de argumentos adicionales al kubelet comando. Para ver una lista completa de parámetros que admite kubelet, consulte la Documentación de Kubernetes. En el siguiente ejemplo, --node-labels mylabel=helloworld se agrega a la línea de comandos de 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==--

Configuración del tiempo de ejecución del contenedor

Puede utilizar la variable de entorno AWS Batch CONTAINER_RUNTIME para configurar el tiempo de ejecución del contenedor en un nodo administrado. En el siguiente ejemplo, se establece el tiempo de ejecución del contenedor en containerd cuando se ejecuta bootstrap.sh. Para obtener más información, consulte containerd en la documentación de Kubernetes.

nota

La variable de entorno de CONTAINER_RUNTIME equivale a la opción --container-runtime de bootstrap.sh. Para obtener más información, consulte Options en la documentación de 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==--

Montaje de un EFS volumen de Amazon

Puede utilizar plantillas de lanzamiento para montar los volúmenes en el nodo. En el siguiente ejemplo, se utilizan los ajustes cloud-config packages y runcmd. Para obtener más información, consulte ejemplos de configuración de nube en la cloud-initdocumentación.

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 utilizar este volumen en el trabajo, debe añadirse al eksPropertiesparámetro to RegisterJobDefinition. El siguiente ejemplo es una gran parte de la definición del trabajo.

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

En el nodo, el EFS volumen de Amazon está montado en el /mnt/efs directorio. En el contenedor del EKS trabajo de Amazon, el volumen se monta en el /efs directorio.

IPv6soporte

AWS Batch admite EKS clústeres de Amazon que tienen IPv6 direcciones. No se requieren personalizaciones para obtener AWS Batch soporte. Sin embargo, antes de empezar, te recomendamos que revises las consideraciones y condiciones que se describen en Asignar IPv6 direcciones a pods y servicios de la Guía del EKS usuario de Amazon.