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.
Démarrage avec AWS Batch sur Amazon EKS à l'aide de ConfigMap authentification
AWS Batch sur Amazon EKS est un service géré permettant de planifier et de dimensionner des charges de travail par lots dans des clusters Amazon EKS existants. AWS Batch ne crée, n'administre ni n'effectue les opérations relatives au cycle de vie de vos clusters Amazon EKS en votre nom. AWS Batch l'orchestration fait évoluer les nœuds vers le haut et vers le bas gérés par AWS Batch et exécutez des pods sur ces nœuds.
ConfigMap-based l'authentification est obsolète
Le aws-auth ConfigMap mode d'authentification (CONFIG_MAP) est obsolète et a été remplacée par l'API d'entrée d'accès Amazon EKS avec le cluster Amazon EKS authenticationMode réglé sur API ou API_AND_CONFIG_MAP.
Si votre cluster prend en charge les entrées d'accès (authenticationMode est API ou API_AND_CONFIG_MAP), nous vous recommandons vivement d'utiliser plutôt la méthode de saisie d'accès. Voir Démarrage avec AWS Batch sur Amazon EKS pour l'approche recommandée.
Utilise ça ConfigMap-based tutoriel uniquement si votre cluster est authenticationMode est CONFIG_MAP.
AWS Batch ne touche pas les nœuds, ne dimensionne pas automatiquement les groupes de nœuds ou les cycles de vie des pods qui ne sont pas associés à AWS Batch environnements informatiques au sein de votre cluster Amazon EKS. Pour AWS Batch pour fonctionner efficacement, ses rôle lié à un service besoins Kubernetes autorisations de contrôle d'accès basé sur les rôles (RBAC) dans votre cluster Amazon EKS existant. Pour plus d'informations, voir Utilisation de l'autorisation RBAC
AWS Batch nécessite un Kubernetes espace de noms où il peut définir les pods comme AWS Batch emplois dans. Nous recommandons un espace de noms dédié pour isoler les AWS Batch pods provenant de vos autres charges de travail de cluster.
Après AWS Batch a reçu un accès RBAC et un espace de noms a été créé, vous pouvez associer ce cluster Amazon EKS à un AWS Batch environnement de calcul utilisant le CreateComputeEnvironment Fonctionnement de l'API. 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 du SubmitJob Fonctionnement de l'API. AWS Batch puis lance AWS Batch nœuds gérés et placez les tâches depuis la file d'attente des tâches comme Kubernetes pods dans le cluster EKS associé à un AWS Batch environnement informatique.
Les sections suivantes expliquent comment configurer AWS Batch sur Amazon EKS.
Table des matières
Vue d’ensemble
Ce didacticiel explique comment configurer AWS Batch avec Amazon EKS à l'aide du AWS CLI, kubectl et eksctl.
- Public cible
-
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.
- Caractéristiques utilisées
-
Ce tutoriel vous montre comment utiliser le AWS CLI, à :
-
Création et configuration d'un environnement de calcul Amazon EKS
-
Créez une file d'attente pour les tâches.
-
Créer une définition de tâche
-
Créez et soumettez une tâche à exécuter
-
Soumettre une offre d'emploi avec des modifications
-
- 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. 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é à l'heure cumulée Varie en fonction de l'instance, voir Tarification Amazon EKS
Conditions préalables
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 les deux AWS Batch et des 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 1.26.0 ou une version ultérieure. Pour plus d'informations, voir Installation, mise à jour et désinstallation du AWS CLI dans le AWS Command Line Interface Guide de l'utilisateur. Après avoir installé le AWS CLI, nous vous recommandons de le configurer également. Pour plus d'informations, voir Configuration rapide avec
aws configuredans le AWS Command Line Interface Guide de l'utilisateur. -
kubectl: outil de ligne de commande pour travailler avec des clusters Kubernetes. Ce guide est compatible avec la version1.23ou une version ultérieure. Pour plus d'informations, veuillez consulter Installation ou mise à jour dekubectldans le Guide de l'utilisateur Amazon EKS. -
— Outil en ligne de commande permettant de travailler avec des clusters Amazon EKS qui automatise de nombreuses tâches individuelles. Ce guide est compatible avec la versioneksctl0.115.0ou une version ultérieure. Pour plus d'informations, veuillez consulter Installation ou mise à jour dedans 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, CloudFormation, ainsi qu'un VPC et des ressources associées. Pour plus d'informations, voir Actions, ressources et clés de condition pour Amazon Elastic Kubernetes Service et Utilisation de rôles liés aux services 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 le CreateComputeEnvironment Les opérations d'API visant à créer un environnement de calcul utilisant les ressources Amazon EKS nécessitent des autorisations sur
eks:DescribeClusterFonctionnement de l'API. -
Compte AWS nombre — Vous devez connaître votre Compte AWS IDENTIFIANT. Suivez les instructions figurant dans Affichage de votre Compte AWS IDENTIFIANT.
(Facultatif) CloudWatch — Pour examiner les détails de (Facultatif) Soumettre une offre d'emploi avec des modifications, la journalisation doit être configurée. Pour plus d’informations, consultez 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 comprend 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 ceux qui répondent à vos besoins.
Une fois que vous avez installé les prérequis, vous devez créer votre cluster à l'aide de eksctl. La création du cluster peut prendre entre 10 et 15 minutes.
$eksctl create cluster --namemy-cluster-name--regionregion-code
Dans la commande précédente, remplacez :
-
Remplacer
my-cluster-nameavec le nom que vous souhaitez utiliser pour votre cluster. -
Remplacer
region-codeavec 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éez un espace de noms dédié pour AWS Batch jobs
Utiliser
kubectlpour 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}" } } } EOFSortie :
namespace/my-aws-batch-namespace created -
Permettre l'accès via le contrôle d'accès basé sur les rôles (RBAC)
Utiliser
kubectlpour créer un Kubernetes rôle que le cluster doit autoriser AWS Batch pour surveiller les nœuds et les pods, et pour 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-rolerules: - 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-bindingsubjects: - kind: User name:aws-batchapiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name:aws-batch-cluster-roleapiGroup: 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éer un espace de noms limité Kubernetes rôle pour AWS Batch pour gérer et assurer le cycle 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-rolenamespace: ${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-bindingnamespace: ${namespace} subjects: - kind: User name:aws-batchapiGroup: rbac.authorization.k8s.io roleRef: kind: Role name:aws-batch-compute-environment-roleapiGroup: 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 -
Mettre à jour Kubernetes
aws-authcarte de configuration pour mapper les autorisations RBAC précédentes au AWS Batch rôle lié à un service.Dans la commande suivante, remplacez :
-
Remplacer
<your-account-number>avec votre Compte AWS numéro.
$eksctl create iamidentitymapping \ --clustermy-cluster-name\ --arn "arn:aws:iam::<your-account-number>:role/AWSServiceRoleForBatch" \ --usernameaws-batchSortie :
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é à un service. Cela est dû à un problème avecaws-authcarte de configuration. Pour plus d'informations, voir 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 de calcul Amazon EKS
AWS Batch les environnements informatiques définissent les paramètres des ressources de calcul pour répondre à vos besoins de charge de travail par lots. Dans un environnement informatique géré, AWS Batch vous aide à gérer la capacité et les types d'instances des ressources de calcul (Kubernetes nœuds) au sein de votre cluster Amazon EKS. Ceci est basé sur la spécification des ressources de calcul que vous définissez lorsque vous créez l'environnement de calcul. Vous pouvez utiliser EC2 On-Demand Instances ou instances ponctuelles EC2.
Maintenant que le AWSServiceRoleForBatch le rôle lié à un service a accès à votre cluster Amazon EKS, vous pouvez créer AWS Batch ressources. Tout d'abord, créez un environnement de calcul qui pointe vers votre cluster Amazon EKS.
-
Pour
subnetscourireksctl get clusterpour obtenir les sous-réseaux utilisés par le cluster.my-cluster-name -
Pour
securityGroupIdsparamètre vous permettant d'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 \ --namemy-cluster-name\ --query cluster.resourcesVpcConfig.clusterSecurityGroupId -
Le
instanceRoleest créé lorsque vous créez le cluster. Pour trouver leinstanceRolerépertorier toutes les entités qui utilisent leAmazonEKSWorkerNodePolicypolitique :$aws iam list-entities-for-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicyLe nom du rôle de politique contient le nom du cluster que vous avez créé.
eksctl-.my-cluster-name-nodegroup-examplePour trouver le
instanceRolearn exécute 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, voir 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 d'Amazon EKS. Si vous utilisez la mise en réseau des pods, voir Configuration du plug-in Amazon VPC CNI pour Kubernetes pour utiliser les rôles IAM pour les comptes de service dans le Guide de l'utilisateur d'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 plus d’informations, consultez Responsabilité partagée des Kubernetes nœuds.
Étape 4 : Création d'une file d'attente de tâches et attachement de l'environnement informatique
Important
Il est important de vérifier que l'environnement informatique est sain avant de poursuivre. Le DescribeComputeEnvironments Le fonctionnement de l'API peut être utilisé pour ce faire.
$aws batch describe-compute-environments --compute-environmentsMy-Eks-CE1
Confirmez que status le paramètre n'est pas INVALID. Si c'est le cas, regardez le statusReason paramètre de la cause. Pour plus d’informations, consultez Résolution des problèmes AWS Batch.
Les tâches soumises à cette nouvelle file d'attente de tâches sont exécutées sous forme de modules sur AWS Batch nœuds 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 poste
La définition de tâche suivante indique au module de dormir 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 pour
cpuetmemoryparamètres. Pour plus d’informations, consultez Considérations relatives à la mémoire et au processeur virtuel pour AWS Batch sur Amazon EKS.
Étape 6 : Soumettre une offre d'emploi
Exécutez ce qui suit AWS CLI commande pour soumettre une nouvelle tâche.
$aws batch submit-job --job-queueMy-Eks-JQ1\ --job-definitionMyJobOnEks_Sleep--job-nameMy-Eks-Job1
Pour vérifier le statut d'une tâche :
$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, consultez Offres 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 le AWS Batch console à https://console.aws.amazon.com/batch/
. -
Dans le volet de navigation, choisissez Offres d'emploi.
-
Dans le File d'attente des tâches dans le menu déroulant, choisissez la file d'attente de tâches que vous avez créée pour le didacticiel.
-
Le Offres d'emploi Un tableau répertorie toutes vos offres d'emploi et leur statut actuel. Une fois le job État est A réussi choisissez le Nom du Job,
My-Eks-Job1, pour consulter les détails de la tâche. -
Dans le Détails volet le Commencé à et Arrêté à les horaires devraient être espacés d'une minute.
Étape 8 : (Facultatif) Soumettre une tâche avec des modifications
Cette tâche remplace la commande transmise au conteneur. AWS Batch nettoie de manière agressive 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 plus d’informations, consultez 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, voir Journalisation du plan de contrôle Amazon EKS dans le Guide de l'utilisateur d'Amazon EKS.
-
Daemonsets et kubelets les frais généraux affectent les ressources vCPU et mémoire disponibles, en particulier la mise à l'échelle et le placement. Pour plus d’informations, consultez Considérations relatives à la mémoire et au processeur virtuel pour AWS Batch sur Amazon EKS.
Pour afficher le résultat du Job, procédez comme suit :
-
Ouvrez le AWS Batch console à https://console.aws.amazon.com/batch/
. -
Dans le volet de navigation, choisissez Offres d'emploi.
-
Dans le File d'attente des tâches dans le menu déroulant, choisissez la file d'attente de tâches que vous avez créée pour le didacticiel.
-
Le Offres d'emploi Un tableau répertorie toutes vos offres d'emploi et leur statut actuel. Une fois le job État est A réussi choisissez le Nom de la tâche pour afficher les détails de la tâche.
-
Dans le Détails volet choisir Nom du flux de journaux. Le CloudWatch la console du Job s'ouvrira et il devrait y avoir un événement avec le Message de
hello worldou votre message personnalisé.
Étape 9 : Nettoyez les ressources de votre didacticiel
L'instance Amazon EC2 vous est facturée tant qu'elle est activée. Vous pouvez supprimer l'instance pour ne plus entraîner de frais.
Pour supprimer les ressources que vous avez créées, procédez comme suit :
-
Ouvrez le AWS Batch console à https://console.aws.amazon.com/batch/
. -
Dans le volet de navigation, choisissez File d'attente des tâches.
-
Dans le File d'attente des tâches table choisissez la file d'attente de tâches que vous avez créée pour le didacticiel.
-
Choisissez Désactiver. Une fois la file d'attente des tâches État est désactivé, vous pouvez choisir Supprimer.
-
Une fois la file d'attente des tâches supprimée, dans le volet de navigation, choisissez Environnements informatiques.
-
Choisissez l'environnement informatique que vous avez créé pour ce didacticiel, puis choisissez Désactiver. La désactivation complète de l'environnement informatique peut prendre 1 à 2 minutes.
-
Une fois que l'environnement informatique État 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 le Meilleures pratiques.
-
Explorez le AWS Batch composants de base. Pour plus d’informations, consultez Composantes de AWS Batch.
-
En savoir plus sur les différents Environnements informatiques disponible en AWS Batch.
-
En savoir plus sur Files d'attente pour les et leurs différentes options de planification.
-
En savoir plus sur Définitions des emplois et les différentes options de configuration.
-
En savoir plus sur les différents types de Offres d'emploi.