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.
Commencer à utiliser AWS Batch sur Amazon EKS
AWS Batch sur Amazon EKS est un service géré permettant de planifier et de dimensionner les charges de travail par lots dans les clusters Amazon EKS existants. AWS Batch ne crée, n'administre ni n'effectue d'opérations de cycle de vie de vos clusters Amazon EKS en votre nom. AWS Batch l'orchestration fait évoluer vers le haut et vers le bas les nœuds gérés par ces nœuds AWS Batch et exécute des pods sur ces nœuds.
AWS Batch ne touche pas les nœuds, les groupes de nœuds à dimensionnement automatique ou les cycles de vie des pods qui ne sont pas associés aux environnements AWS Batch informatiques de votre cluster Amazon EKS. AWS Batch Pour fonctionner efficacement, son rôle lié à un service nécessite des autorisations de contrôle d'accès Kubernetes basé sur les rôles (RBAC) dans votre cluster Amazon EKS existant. Pour plus d'informations, consultez la section Utilisation de l'autorisation RBAC
AWS Batch nécessite un espace de Kubernetes noms dans lequel il peut étendre les pods en tant que AWS Batch tâches. Nous recommandons un espace de noms dédié pour isoler les AWS Batch pods de vos autres charges de travail de cluster.
Une fois AWS Batch que vous avez obtenu l'accès RBAC et qu'un espace de noms a été établi, vous pouvez associer ce cluster Amazon EKS à un environnement AWS Batch informatique à l'aide de l'opération CreateComputeEnvironmentAPI. Une file d'attente de tâches peut être associée à ce nouvel environnement de calcul Amazon EKS. AWS Batch les tâches sont soumises à la file d'attente des tâches sur la base d'une définition de tâche Amazon EKS à l'aide de l'opération SubmitJobAPI. AWS Batch lance ensuite les nœuds AWS Batch gérés et place les tâches de la file d'attente sous forme de Kubernetes pods dans le cluster EKS associé à un environnement AWS Batch informatique.
Les sections suivantes expliquent comment procéder à la configuration AWS Batch sur Amazon EKS.
Table des matières
Présentation
Ce didacticiel explique comment effectuer AWS Batch une configuration avec Amazon EKS à AWS CLI l'aide kubectl
eksctl
des
- Public visé
-
Ce didacticiel est destiné aux administrateurs système et aux développeurs chargés de la configuration, des tests et du déploiement AWS Batch.
- Fonctionnalités utilisées
-
Ce didacticiel vous montre comment utiliser le AWS CLI, pour :
-
Création et configuration d'un environnement informatique Amazon EKS
-
Créez une file d'attente de tâches.
-
Créer une définition de tâche
-
Création et soumission d'une tâche à exécuter
-
Soumettre une offre d'emploi avec des dérogations
-
- Temps requis
-
La réalisation de ce didacticiel devrait prendre environ 30 à 40 minutes.
- Restrictions régionales
-
Aucune restriction nationale ou régionale n'est associée à l'utilisation de cette solution.
- Coûts d'utilisation des ressources
-
La création d'un AWS compte est gratuite. Cependant, en mettant en œuvre cette solution, vous pouvez être redevable de tout ou partie des frais répertoriés dans le tableau suivant.
Description Coût (dollar américain) Vous êtes facturé en fonction de l'heure du cluster Varie en fonction de l'instance, voir la tarification d'Amazon EKS
Prérequis
Avant de commencer ce didacticiel, vous devez installer et configurer les outils et ressources suivants dont vous avez besoin pour créer et gérer à la fois les ressources Amazon EKS AWS Batch et les ressources Amazon EKS.
-
AWS CLI : outil de ligne de commande pour travailler avec AWS , y compris Amazon EKS. Ce guide nécessite que vous utilisiez la version 2.8.6 ou ultérieure ou la version 1.26.0 ou ultérieure. Pour plus d'informations, consultez la section Installation, mise à jour et désinstallation du AWS CLI dans le guide de l'AWS Command Line Interface utilisateur. Après l'avoir installé AWS CLI, nous vous recommandons de le configurer également. Pour plus d'informations, voir Configuration rapide avec
aws configure
dans le Guide de AWS Command Line Interface l'utilisateur. -
kubectl
: outil de ligne de commande pour travailler avec des clusters Kubernetes. Ce guide est compatible avec la version1.23
ou une version ultérieure. Pour plus d'informations, veuillez consulter Installation ou mise à jour dekubectl
dans le Guide de l'utilisateur Amazon EKS. -
— Un outil de ligne de commande pour travailler avec des clusters Amazon EKS qui automatise de nombreuses tâches individuelles. Ce guide est compatible avec la versioneksctl
0.115.0
ou une version ultérieure. Pour plus d'informations, veuillez consulter Installation ou mise à jour de
dans le Guide de l'utilisateur Amazon EKS.eksctl
-
Autorisations IAM requises : le principal de sécurité IAM que vous utilisez doit être autorisé à utiliser les rôles IAM Amazon EKS et les rôles liés aux services AWS CloudFormation, ainsi qu'un VPC et les ressources associées. Pour plus d'informations, consultez les sections Actions, ressources et clés de condition pour Amazon Elastic Kubernetes Service et Utilisation de rôles liés à un service dans le guide de l'utilisateur IAM. Vous devez effectuer toutes les étapes de ce guide avec le même utilisateur.
-
Autorisations : les utilisateurs qui appellent l'opération d'CreateComputeEnvironmentAPI pour créer un environnement informatique utilisant les ressources Amazon EKS ont besoin d'autorisations pour l'opération
eks:DescribeCluster
d'API. -
Compte AWS numéro — Vous devez connaître votre Compte AWS identifiant. Suivez les instructions de la section Afficher votre Compte AWS identifiant.
(Facultatif) CloudWatch — Pour examiner les détails de (Facultatif) Soumettre une tâche avec des remplacements, la journalisation doit être configurée. Pour de plus amples informations, veuillez consulter Utiliser CloudWatch les journaux pour surveiller AWS Batch les tâches Amazon EKS.
Étape 1 : Créez votre cluster Amazon EKS pour AWS Batch
Important
Pour démarrer le plus simplement et le plus rapidement possible, ce didacticiel inclut des étapes avec les paramètres par défaut. Avant de créer pour une utilisation en production, nous vous recommandons de vous familiariser avec tous les paramètres et de déployer avec ceux qui répondent à vos besoins.
Une fois que vous avez installé les prérequis, vous devez créer votre cluster à l'aide eksctl
de. La création du cluster peut prendre entre 10 et 15 minutes.
$
eksctl create cluster --name
my-cluster-name
--regionregion-code
Dans la commande précédente, remplacez :
-
my-cluster-name
Remplacez-le par le nom que vous souhaitez utiliser pour votre cluster. -
region-code
Remplacez-le par le Région AWS pour créer le cluster dans, par exempleus-west-2
.
Le nom et la région du cluster sont nécessaires pour la suite de ce didacticiel.
Étape 2 : Préparez votre cluster Amazon EKS pour AWS Batch
Toutes les étapes sont obligatoires.
-
Création d'un espace de noms dédié aux tâches AWS Batch
kubectl
À utiliser pour créer un nouvel espace de noms.$
namespace=
my-aws-batch-namespace
$
cat - <<EOF | kubectl create -f - { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "${namespace}", "labels": { "name": "${namespace}" } } } EOF
Sortie :
namespace/my-aws-batch-namespace created
-
Permettre l'accès via le contrôle d'accès basé sur les rôles (RBAC)
kubectl
À utiliser pour créer un Kubernetes rôle pour le cluster afin de AWS Batch permettre de surveiller les nœuds et les pods, et de lier le rôle. Vous devez effectuer cette opération une fois pour chaque cluster EKS.$
cat - <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name:
aws-batch-cluster-role
rules: - apiGroups: [""] resources: ["namespaces"] verbs: ["get"] - apiGroups: [""] resources: ["nodes"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["pods"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["events"] verbs: ["list"] - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "list", "watch"] - apiGroups: ["apps"] resources: ["daemonsets", "deployments", "statefulsets", "replicasets"] verbs: ["get", "list", "watch"] - apiGroups: ["rbac.authorization.k8s.io"] resources: ["clusterroles", "clusterrolebindings"] verbs: ["get", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name:aws-batch-cluster-role-binding
subjects: - kind: User name:aws-batch
apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name:aws-batch-cluster-role
apiGroup: rbac.authorization.k8s.io EOFSortie :
clusterrole.rbac.authorization.k8s.io/aws-batch-cluster-role created clusterrolebinding.rbac.authorization.k8s.io/aws-batch-cluster-role-binding created
-
Créez un Kubernetes rôle délimité par un espace de noms pour gérer et prolonger le cycle AWS Batch de vie des pods et les lier. Vous devez effectuer cette opération une fois pour chaque espace de noms unique.
$
namespace=
my-aws-batch-namespace
$
cat - <<EOF | kubectl apply -f - --namespace "${namespace}" apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name:
aws-batch-compute-environment-role
namespace: ${namespace} rules: - apiGroups: [""] resources: ["pods"] verbs: ["create", "get", "list", "watch", "delete", "patch"] - apiGroups: [""] resources: ["serviceaccounts"] verbs: ["get", "list"] - apiGroups: ["rbac.authorization.k8s.io"] resources: ["roles", "rolebindings"] verbs: ["get", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name:aws-batch-compute-environment-role-binding
namespace: ${namespace} subjects: - kind: User name:aws-batch
apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name:aws-batch-compute-environment-role
apiGroup: rbac.authorization.k8s.io EOFSortie :
role.rbac.authorization.k8s.io/aws-batch-compute-environment-role created rolebinding.rbac.authorization.k8s.io/aws-batch-compute-environment-role-binding created
-
Mettez à Kubernetes
aws-auth
jour la carte de configuration pour associer les autorisations RBAC précédentes au rôle lié au service. AWS BatchDans la commande suivante, remplacez :
-
Remplacez
<your-account-number>
par votre Compte AWS numéro.
$
eksctl create iamidentitymapping \ --cluster
my-cluster-name
\ --arn "arn:aws:iam::<your-account-number>
:role/AWSServiceRoleForBatch" \ --usernameaws-batch
Sortie :
2022-10-25 20:19:57 [ℹ] adding identity "arn:aws:iam::
<your-account-number>
:role/AWSServiceRoleForBatch" to auth ConfigMapNote
Le chemin
aws-service-role/batch.amazonaws.com/
a été supprimé de l'ARN du rôle lié au service. Cela est dû à un problème avec la carteaws-auth
de configuration. Pour plus d'informations, consultez la section Les rôles dotés de chemins ne fonctionnent pas lorsque le chemin est inclus dans leur ARN dans le aws-authconfigmap. -
Étape 3 : Création d'un environnement informatique Amazon EKS
AWS Batch les environnements informatiques définissent les paramètres des ressources de calcul pour répondre à vos besoins en matière de charge de travail par lots. Dans un environnement informatique géré, vous AWS Batch aide à gérer la capacité et les types d'instances des ressources de calcul (Kubernetesnœuds) au sein de votre cluster Amazon EKS. Ceci est basé sur la spécification des ressources de calcul que vous définissez lors de la création de l'environnement de calcul. Vous pouvez utiliser des instances EC2 à la demande ou des instances EC2 ponctuelles.
Maintenant que le rôle AWSServiceRoleForBatchlié au service a accès à votre cluster Amazon EKS, vous pouvez créer des AWS Batch ressources. Créez d'abord un environnement informatique qui pointe vers votre cluster Amazon EKS.
-
Pour
subnets
exécutereksctl get cluster
pour obtenir les sous-réseaux utilisés par le cluster.my-cluster-name
-
Pour les
securityGroupIds
paramètres, vous pouvez utiliser le même groupe de sécurité que le cluster Amazon EKS. Cette commande récupère l'ID du groupe de sécurité pour le cluster.$
aws eks describe-cluster \ --name
my-cluster-name
\ --query cluster.resourcesVpcConfig.clusterSecurityGroupId -
Le
instanceRole
est créé lorsque vous créez le cluster. Pour trouver lainstanceRole
liste de toutes les entités qui utilisent laAmazonEKSWorkerNodePolicy
politique :$
aws iam list-entities-for-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
Le nom du rôle de stratégie contient le nom du cluster que vous avez créé
eksctl-
.my-cluster-name
-nodegroup-examplePour trouver l'
instanceRole
ARN, exécutez la commande suivante :$
aws iam list-instance-profiles-for-role --role-name eksctl-
my-cluster-name
-nodegroup-exampleSortie :
INSTANCEPROFILES arn:aws:iam::
<your-account-number>
:instance-profile/eks-04cb2200-94b9-c297-8dbe-87f12examplePour plus d'informations, consultez les sections Création du rôle IAM du nœud Amazon EKS et Activation de l'accès principal IAM à votre cluster dans le guide de l'utilisateur Amazon EKS. Si vous utilisez un réseau de modules, consultez la section Configuration du plug-in Amazon VPC CNI pour utiliser les rôles IAM Kubernetes pour les comptes de service dans le guide de l'utilisateur Amazon EKS.
$
cat <<EOF > ./batch-eks-compute-environment.json { "computeEnvironmentName": "
My-Eks-CE1
", "type": "MANAGED", "state": "ENABLED", "eksConfiguration": { "eksClusterArn": "arn:aws:eks:region-code
:your-account-number
:cluster/my-cluster-name
", "kubernetesNamespace": "my-aws-batch-namespace
" }, "computeResources": { "type": "EC2", "allocationStrategy": "BEST_FIT_PROGRESSIVE", "minvCpus": 0, "maxvCpus": 128, "instanceTypes": [ "m5" ], "subnets": [ "<eks-cluster-subnets-with-access-to-internet-for-image-pull>
" ], "securityGroupIds": [ "<eks-cluster-sg>
" ], "instanceRole": "<eks-instance-profile>
" } } EOF
$
aws batch create-compute-environment --cli-input-json file://./batch-eks-compute-environment.json
Remarques
-
La maintenance d'un environnement informatique Amazon EKS est une responsabilité partagée. Pour de plus amples informations, veuillez consulter Responsabilité partagée des Kubernetes nœuds.
Étape 4 : créer une file d'attente de tâches et associer l'environnement informatique
Important
Il est important de vérifier que l'environnement informatique est sain avant de continuer. L'opération DescribeComputeEnvironmentsAPI peut être utilisée à cette fin.
$
aws batch describe-compute-environments --compute-environments
My-Eks-CE1
Vérifiez que le status
paramètre ne l'est pasINVALID
. Si c'est le cas, examinez le statusReason
paramètre correspondant à la cause. Pour de plus amples informations, veuillez consulter Résolution des problèmes AWS Batch.
Les tâches soumises à cette nouvelle file d'attente sont exécutées en tant que modules sur des nœuds AWS Batch gérés qui ont rejoint le cluster Amazon EKS associé à votre environnement informatique.
$
cat <<EOF > ./batch-eks-job-queue.json { "jobQueueName": "
My-Eks-JQ1
", "priority": 10, "computeEnvironmentOrder": [ { "order": 1, "computeEnvironment": "My-Eks-CE1
" } ] } EOF
$
aws batch create-job-queue --cli-input-json file://./batch-eks-job-queue.json
Étape 5 : Création d'une définition de tâche
La définition de Job suivante indique au module de rester en veille pendant 60 secondes.
$
cat <<EOF > ./batch-eks-job-definition.json { "jobDefinitionName": "
MyJobOnEks_Sleep
", "type": "container", "eksProperties": { "podProperties": { "hostNetwork": true, "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": [ "sleep", "60" ], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } } } ], "metadata": { "labels": { "environment": "test
" } } } } } EOF
$
aws batch register-job-definition --cli-input-json file://./batch-eks-job-definition.json
Remarques
-
Il existe des considérations relatives aux
memory
paramètrescpu
et. Pour de plus amples informations, veuillez consulter Considérations relatives à la mémoire et au vCPU pour AWS Batch Amazon EKS.
Étape 6 : Soumettre une offre d'emploi
Exécutez la AWS CLI commande suivante pour soumettre un nouveau Job.
$
aws batch submit-job --job-queue
My-Eks-JQ1
\ --job-definitionMyJobOnEks_Sleep
--job-nameMy-Eks-Job1
Pour vérifier le statut d'un Job :
$
aws batch describe-jobs --job
<jobId-from-submit-response>
Remarques
-
Pour plus d'informations sur l'exécution de tâches sur les ressources Amazon EKS, consultezOffres d'emploi Amazon EKS.
Étape 7 : Afficher le résultat de la tâche
Pour afficher le résultat du Job, procédez comme suit :
-
Ouvrez la AWS Batch console à l'adresse https://console.aws.amazon.com/batch/
. -
Dans le volet de navigation, sélectionnez Jobs.
-
Dans le menu déroulant Job Queue, sélectionnez la file d'attente des Job que vous avez créée pour le didacticiel.
-
Le tableau des tâches répertorie toutes vos tâches et leur statut actuel. Une fois que le statut du Job est atteint, choisissez le nom du Job
My-Eks-JQ1
, pour afficher les détails du Job. -
Dans le volet Détails, les moments de démarrage et d'arrêt doivent être espacés d'une minute.
Étape 8 : (Facultatif) Soumettre une tâche avec des remplacements
Cette tâche remplace la commande transmise au conteneur. AWS Batch nettoie agressivement les capsules une fois les travaux terminés afin de réduire la charge à. Kubernetes Pour examiner les détails d'une tâche, la journalisation doit être configurée. Pour de plus amples informations, veuillez consulter Utiliser CloudWatch les journaux pour surveiller AWS Batch les tâches Amazon EKS.
$
cat <<EOF > ./submit-job-override.json { "jobName": "
EksWithOverrides
", "jobQueue": "My-Eks-JQ1
", "jobDefinition": "MyJobOnEks_Sleep
", "eksPropertiesOverride": { "podProperties": { "containers": [ { "command": [ "/bin/sh" ], "args": [ "-c", "echo hello world" ] } ] } } } EOF
$
aws batch submit-job --cli-input-json file://./submit-job-override.json
Remarques
-
Pour une meilleure visibilité des détails des opérations, activez la journalisation du plan de contrôle Amazon EKS. Pour plus d'informations, consultez la section Connexion au plan de contrôle Amazon EKS dans le guide de l'utilisateur Amazon EKS.
-
Daemonsetset la kubelets surcharge affecte les ressources de vCPU et de mémoire disponibles, en particulier le dimensionnement et le placement des tâches. Pour de plus amples informations, veuillez consulter Considérations relatives à la mémoire et au vCPU pour AWS Batch Amazon EKS.
Pour afficher le résultat du Job, procédez comme suit :
-
Ouvrez la AWS Batch console à l'adresse https://console.aws.amazon.com/batch/
. -
Dans le volet de navigation, sélectionnez Jobs.
-
Dans le menu déroulant Job Queue, sélectionnez la file d'attente des Job que vous avez créée pour le didacticiel.
-
Le tableau des tâches répertorie toutes vos tâches et leur statut actuel. Une fois que le statut du Job est atteint, choisissez le nom du Job pour afficher les détails du Job.
-
Dans le volet Détails, choisissez le nom du flux du journal. La CloudWatch console du Job s'ouvre et il devrait y avoir un événement avec le message de
hello world
ou votre message personnalisé.
Étape 9 : Nettoyez les ressources de votre didacticiel
L' EC2 instance Amazon vous est facturée lorsqu'elle est activée. Vous pouvez supprimer l'instance pour ne plus encourir de frais.
Pour supprimer les ressources que vous avez créées, procédez comme suit :
-
Ouvrez la AWS Batch console à l'adresse https://console.aws.amazon.com/batch/
. -
Dans le volet de navigation, choisissez Job queue.
-
Dans le tableau des files d'attente de tâches, choisissez la file d'attente de tâches que vous avez créée pour le didacticiel.
-
Choisissez Désactiver. Une fois que l'état de la file d'attente des Job est désactivé, vous pouvez choisir Delete.
-
Une fois la file d'attente de Job supprimée, dans le volet de navigation, sélectionnez Compute environments.
-
Choisissez l'environnement informatique que vous avez créé pour ce didacticiel, puis sélectionnez Désactiver. La désactivation complète de l'environnement informatique peut prendre 1 à 2 minutes.
-
Une fois que l'état de l'environnement informatique est désactivé, choisissez Supprimer. La suppression de l'environnement informatique peut prendre 1 à 2 minutes.
Ressources supplémentaires
Une fois le didacticiel terminé, vous souhaiterez peut-être explorer les sujets suivants :
-
En savoir plus sur les meilleures pratiques.
-
Explorez les AWS Batch principaux composants. Pour de plus amples informations, veuillez consulter Composants de AWS Batch.
-
En savoir plus sur les différents environnements informatiques disponibles dans AWS Batch.
-
En savoir plus sur les files d'attente de Job et leurs différentes options de planification.
-
En savoir plus sur les définitions de Job et les différentes options de configuration.
-
Apprenez-en davantage sur les différents types d'emplois.