Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Guida introduttiva ad AWS Batch Amazon EKS
AWS Batch su Amazon EKS è un servizio gestito per la pianificazione e la scalabilità dei carichi di lavoro in batch in cluster Amazon EKS esistenti. AWS Batch non crea, amministra o esegue operazioni sul ciclo di vita dei tuoi cluster Amazon EKS per tuo conto. AWS Batch l'orchestrazione ridimensiona verso l'alto e verso il basso i nodi gestiti da AWS Batch ed esegue i pod su tali nodi.
AWS Batch non tocca nodi, gruppi di nodi con scalabilità automatica o cicli di vita dei pod che non sono associati agli ambienti di AWS Batch elaborazione all'interno del cluster Amazon EKS. AWS Batch Per funzionare in modo efficace, il suo ruolo collegato ai servizi necessita di autorizzazioni di controllo degli accessi Kubernetes in base al ruolo (RBAC) nel cluster Amazon EKS esistente. Per ulteriori informazioni, consulta Using RBAC Authorization nella documentazione. Kubernetes
AWS Batch richiede uno spazio Kubernetes dei nomi in cui possa definire i pod come job. AWS Batch Consigliamo uno spazio dei nomi dedicato per isolare i AWS Batch pod dagli altri carichi di lavoro del cluster.
Dopo AWS Batch aver ottenuto l'accesso RBAC e aver stabilito uno spazio dei nomi, puoi associare il cluster Amazon EKS a un ambiente di AWS Batch calcolo utilizzando l'operazione API. CreateComputeEnvironment Una coda di lavoro può essere associata a questo nuovo ambiente di calcolo Amazon EKS. AWS Batch i lavori vengono inviati alla coda dei lavori in base a una definizione di processo Amazon EKS utilizzando l'operazione SubmitJobAPI. AWS Batch quindi avvia i nodi AWS Batch gestiti e inserisce i lavori dalla coda dei lavori come Kubernetes pod nel cluster EKS associato a un ambiente di elaborazione. AWS Batch
Le seguenti sezioni spiegano come eseguire la configurazione AWS Batch su Amazon EKS.
Panoramica
Questo tutorial dimostra come eseguire la configurazione AWS Batch con Amazon EKS utilizzando AWS CLI, kubectl
eeksctl
.
- Destinatari
-
Questo tutorial è progettato per gli amministratori di sistema e gli sviluppatori responsabili della configurazione, del test e della distribuzione AWS Batch.
- Funzionalità utilizzate
-
Questo tutorial mostra come usare AWS CLI, per:
-
Crea e configura un ambiente di calcolo Amazon EKS
-
Crea una coda di lavoro.
-
Creazione di una definizione di processo
-
Crea e invia un lavoro da eseguire
-
Invia un lavoro con eccezioni
-
- Tempo richiesto
-
Il completamento di questo tutorial dovrebbe richiedere circa 30-40 minuti.
- Restrizioni regionali
-
Non esistono restrizioni nazionali o regionali associate all'utilizzo di questa soluzione.
- Costi di utilizzo delle risorse
-
La creazione di un AWS account è gratuita. Tuttavia, l'implementazione di questa soluzione potrebbe comportare l'addebito di alcuni o tutti i costi elencati nella seguente tabella.
Descrizione Costo (dollari USA) L'addebito viene calcolato in base all'ora del cluster Varia a seconda dell'istanza, consulta i prezzi di Amazon EKS
Prerequisiti
Prima di iniziare questo tutorial, devi installare e configurare i seguenti strumenti e risorse necessari per creare e gestire sia AWS Batch le risorse Amazon EKS che quelle di Amazon EKS.
-
AWS CLI: uno strumento a riga di comando per usare i servizi AWS , tra cui Amazon EKS. Questa guida richiede l'utilizzo della versione 2.8.6 o successiva o 1.26.0 o successiva. Per ulteriori informazioni, vedere Installazione, aggiornamento e disinstallazione di nella Guida per l' AWS CLIutente.AWS Command Line Interface Dopo aver installato AWS CLI, ti consigliamo di configurarlo anche. Per ulteriori informazioni, vedere Configurazione rapida con
aws configure
nella Guida AWS Command Line Interface per l'utente. -
kubectl
: uno strumento a riga di comando per lavorare con i cluster Kubernetes. Questa guida richiede l'utilizzo della versione1.23
o successiva. Per ulteriori informazioni, consulta la pagina Installing or updatingkubectl
nella Guida per l'utente di Amazon EKS. -
— Uno strumento da riga di comando per lavorare con i cluster Amazon EKS che automatizza molte attività individuali. Questa guida richiede l'utilizzo della versioneeksctl
0.115.0
o successiva. Per ulteriori informazioni, consulta la pagina Installing or updating
nella Guida per l'utente di Amazon EKS.eksctl
-
Autorizzazioni IAM richieste: il responsabile della sicurezza IAM che stai utilizzando deve disporre delle autorizzazioni per lavorare con i ruoli IAM di Amazon EKS e i ruoli collegati ai servizi AWS CloudFormation, oltre a un VPC e risorse correlate. Per ulteriori informazioni, consulta Azioni, risorse e chiavi di condizione per Amazon Elastic Kubernetes Service e Using service-linked roles nella IAM User Guide. È necessario che tutti i passaggi di questa guida siano completati dallo stesso utente.
-
Autorizzazioni: gli utenti che chiamano l'operazione CreateComputeEnvironmentAPI per creare un ambiente di calcolo che utilizza risorse Amazon EKS richiedono le autorizzazioni per il funzionamento dell'
eks:DescribeCluster
API. -
Account AWS numero: devi conoscere il tuo ID. Account AWS Segui le istruzioni riportate in Visualizzazione del tuo Account AWS ID.
(Facoltativo) CloudWatch: per esaminare i dettagli di (Facoltativo) Invia un lavoro con modifiche, è necessario configurare la registrazione. Per ulteriori informazioni, consulta Usa CloudWatch Logs per monitorare i lavori AWS Batch su Amazon EKS.
Fase 1: crea il tuo cluster Amazon EKS per AWS Batch
Importante
Per iniziare nel modo più semplice e veloce possibile, questo tutorial include passaggi con impostazioni predefinite. Prima di creare per l'uso in produzione, ti consigliamo di acquisire familiarità con tutte le impostazioni e di implementare le impostazioni che soddisfano i tuoi requisiti.
Dopo aver installato i prerequisiti, è necessario creare il cluster utilizzando. eksctl
La creazione del cluster può richiedere dai 10 ai 15 minuti.
$
eksctl create cluster --name
my-cluster-name
--regionregion-code
Nel comando precedente sostituisci:
-
Sostituisci
my-cluster-name
con il nome che desideri utilizzare per il cluster. -
Sostituisci
region-code
con il Regione AWS per creare il cluster, ad esempious-west-2
.
Il nome e la regione del cluster sono necessari per la parte successiva di questo tutorial.
Fase 2: prepara il cluster Amazon EKS per AWS Batch
Tutti i passaggi sono obbligatori.
-
Crea un namespace dedicato per i lavori AWS Batch
Utilizzare
kubectl
per creare un nuovo spazio dei nomi.$
namespace=
my-aws-batch-namespace
$
cat - <<EOF | kubectl create -f - { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "${namespace}", "labels": { "name": "${namespace}" } } } EOF
Output:
namespace/my-aws-batch-namespace created
-
Abilita l'accesso tramite il controllo degli accessi basato sui ruoli (RBAC)
kubectl
Utilizzalo per creare un Kubernetes ruolo per il cluster che AWS Batch consenta di controllare nodi e pod e di associare il ruolo. È necessario eseguire questa operazione una volta per ogni 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 EOFOutput:
clusterrole.rbac.authorization.k8s.io/aws-batch-cluster-role created clusterrolebinding.rbac.authorization.k8s.io/aws-batch-cluster-role-binding created
-
Crea un Kubernetes ruolo con ambito namespace per la gestione e il ciclo AWS Batch di vita dei pod e associalo. È necessario eseguire questa operazione una volta per ogni namespace univoco.
$
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 EOFOutput:
role.rbac.authorization.k8s.io/aws-batch-compute-environment-role created rolebinding.rbac.authorization.k8s.io/aws-batch-compute-environment-role-binding created
-
Aggiorna la mappa Kubernetes
aws-auth
di configurazione per mappare le autorizzazioni RBAC precedenti al ruolo collegato al servizio. AWS BatchNel comando seguente sostituisci:
-
Sostituisci
<your-account-number>
con il tuo Account AWS numero.
$
eksctl create iamidentitymapping \ --cluster
my-cluster-name
\ --arn "arn:aws:iam::<your-account-number>
:role/AWSServiceRoleForBatch" \ --usernameaws-batch
Output:
2022-10-25 20:19:57 [ℹ] adding identity "arn:aws:iam::
<your-account-number>
:role/AWSServiceRoleForBatch" to auth ConfigMapNota
Il percorso
aws-service-role/batch.amazonaws.com/
è stato rimosso dall'ARN del ruolo collegato al servizio. Ciò è dovuto a un problema con laaws-auth
mappa di configurazione. Per ulteriori informazioni, consulta Ruoli con percorsi non funzionano quando il percorso è incluso nel relativo ARN in. aws-auth configmap -
Fase 3: creare un ambiente di calcolo Amazon EKS
AWS Batch gli ambienti di calcolo definiscono i parametri delle risorse di calcolo per soddisfare le esigenze di carico di lavoro in batch. In un ambiente di elaborazione gestito, ti AWS Batch aiuta a gestire la capacità e i tipi di istanze delle risorse di calcolo (Kubernetesnodi) all'interno del tuo cluster Amazon EKS. Si basa sulla specifica delle risorse di calcolo che definisci al momento della creazione dell'ambiente di calcolo. È possibile utilizzare istanze EC2 On-Demand o Istanze Spot. EC2
Ora che il ruolo AWSServiceRoleForBatchcollegato al servizio ha accesso al tuo cluster Amazon EKS, puoi creare AWS Batch risorse. Innanzitutto, crea un ambiente di elaborazione che punti al tuo cluster Amazon EKS.
-
eksctl get cluster
Damy-cluster-name
subnets
eseguire per ottenere le sottoreti utilizzate dal cluster. -
Per il
securityGroupIds
parametro puoi utilizzare lo stesso gruppo di sicurezza del cluster Amazon EKS. Questo comando recupera l'ID del gruppo di sicurezza per il cluster.$
aws eks describe-cluster \ --name
my-cluster-name
\ --query cluster.resourcesVpcConfig.clusterSecurityGroupId -
instanceRole
viene creato quando si crea il cluster. Per trovare l'instanceRole
elenco di tutte le entità che utilizzano laAmazonEKSWorkerNodePolicy
policy:$
aws iam list-entities-for-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
Il nome del ruolo di policy contiene il nome del cluster che hai creato
eksctl-
.my-cluster-name
-nodegroup-examplePer trovare l'
instanceRole
arn esegui il seguente comando:$
aws iam list-instance-profiles-for-role --role-name eksctl-
my-cluster-name
-nodegroup-exampleOutput:
INSTANCEPROFILES arn:aws:iam::
<your-account-number>
:instance-profile/eks-04cb2200-94b9-c297-8dbe-87f12examplePer ulteriori informazioni, consulta Creazione del ruolo IAM del nodo Amazon EKS e Abilitazione dell'accesso principale IAM al cluster nella Guida per l'utente di Amazon EKS. Se utilizzi il pod networking, consulta Configurazione del plug-in Amazon VPC CNI per l'utilizzo dei ruoli IAM Kubernetes per gli account di servizio nella Amazon EKS User Guide.
$
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
Note
-
La manutenzione di un ambiente di calcolo Amazon EKS è una responsabilità condivisa. Per ulteriori informazioni, consulta Responsabilità condivisa dei nodi Kubernetes.
Fase 4: creare una coda di lavoro e collegare l'ambiente di calcolo
Importante
È importante verificare che l'ambiente di elaborazione sia integro prima di procedere. L'operazione DescribeComputeEnvironmentsAPI può essere utilizzata per eseguire questa operazione.
$
aws batch describe-compute-environments --compute-environments
My-Eks-CE1
Conferma che il status
parametro non lo siaINVALID
. Se lo è, esamina il statusReason
parametro relativo alla causa. Per ulteriori informazioni, consulta Risoluzione dei problemi AWS Batch.
I lavori inviati a questa nuova coda di lavoro vengono eseguiti come pod su nodi AWS Batch gestiti che si sono uniti al cluster Amazon EKS associato al tuo ambiente di elaborazione.
$
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
Fase 5: Creare una definizione di lavoro
La seguente definizione di Job indica al pod di dormire per 60 secondi.
$
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
Note
-
Esistono alcune considerazioni relative ai parametri
cpu
andmemory
. Per ulteriori informazioni, consulta Considerazioni su AWS Batch memoria e vCPU per Amazon EKS.
Fase 6: Inviare un lavoro
Esegui il AWS CLI comando seguente per inviare un nuovo Job.
$
aws batch submit-job --job-queue
My-Eks-JQ1
\ --job-definitionMyJobOnEks_Sleep
--job-nameMy-Eks-Job1
Per verificare lo stato di un Job:
$
aws batch describe-jobs --job
<jobId-from-submit-response>
Note
-
Per ulteriori informazioni sull'esecuzione di processi sulle risorse di Amazon EKS, consultaOfferte di lavoro Amazon EKS.
Fase 7: Visualizza l'output del job
Per visualizzare l'output del Job, procedi come segue:
-
Apri la AWS Batch console all'indirizzo https://console.aws.amazon.com/batch/
. -
Nel riquadro di navigazione scegli Jobs.
-
Nel menu a discesa Job queue scegli la coda Job che hai creato per il tutorial.
-
La tabella Jobs elenca tutti i tuoi job e il loro stato attuale. Una volta completato lo stato del Job, scegli il Nome del Job
My-Eks-JQ1
, per visualizzare i dettagli del Job. -
Nel riquadro Dettagli, gli orari Iniziato e Interrotto a devono trovarsi a un minuto di distanza l'uno dall'altro.
Fase 8: (Facoltativo) Inviare un lavoro con eccezioni
Questo lavoro sostituisce il comando passato al contenitore. AWS Batch pulisce in modo aggressivo i pod dopo il completamento dei lavori per ridurre il carico a. Kubernetes Per esaminare i dettagli di un lavoro, è necessario configurare la registrazione. Per ulteriori informazioni, consulta Usa CloudWatch Logs per monitorare i lavori AWS Batch su 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
Note
-
Per una migliore visibilità dei dettagli delle operazioni, abilita la registrazione del piano di controllo di Amazon EKS. Per ulteriori informazioni, consulta la registrazione del piano di controllo di Amazon EKS nella Guida per l'utente di Amazon EKS.
-
Daemonsetse il kubelets sovraccarico influisce sulle risorse di vCPU e memoria disponibili, in particolare sulla scalabilità e sul posizionamento lavorativo. Per ulteriori informazioni, consulta Considerazioni su AWS Batch memoria e vCPU per Amazon EKS.
Per visualizzare l'output del job, effettuate le seguenti operazioni:
-
Apri la AWS Batch console all'indirizzo https://console.aws.amazon.com/batch/
. -
Nel riquadro di navigazione scegli Jobs.
-
Nel menu a discesa Job queue scegli la coda Job che hai creato per il tutorial.
-
La tabella Jobs elenca tutti i tuoi job e il loro stato attuale. Una volta completato lo stato del Job, scegli il Nome del Job per visualizzare i dettagli del Job.
-
Nel riquadro Dettagli scegli Log stream name. La CloudWatch console per il Job si aprirà e dovrebbe esserci un evento con il messaggio Message of
hello world
o il tuo messaggio personalizzato.
Fase 9: Pulisci le risorse del tutorial
Ti viene addebitato il costo dell' EC2 istanza Amazon mentre è abilitata. Puoi eliminare l'istanza per evitare di incorrere in addebiti.
Per eliminare le risorse che hai creato, procedi come segue:
-
Apri la AWS Batch console all'indirizzo https://console.aws.amazon.com/batch/
. -
Nel riquadro di navigazione scegli Job queue.
-
Nella tabella Job queue scegli la coda Job che hai creato per il tutorial.
-
Scegliere Disabilita. Una volta che lo stato della coda Job è disabilitato, puoi scegliere Elimina.
-
Una volta eliminata la coda Job, nel pannello di navigazione scegli Ambienti di calcolo.
-
Scegli l'ambiente di calcolo che hai creato per questo tutorial, quindi scegli Disabilita. Potrebbero essere necessari 1-2 minuti per completare la disattivazione dell'ambiente di calcolo.
-
Una volta che lo stato dell'ambiente di calcolo è disabilitato, scegli Elimina. Potrebbero essere necessari 1-2 minuti per eliminare l'ambiente di calcolo.
Risorse aggiuntive
Dopo aver completato il tutorial, potresti voler esplorare i seguenti argomenti:
-
Scopri di più sulle best practice.
-
Esplora i componenti AWS Batch principali. Per ulteriori informazioni, consulta Componenti di AWS Batch.
-
Scopri di più sui diversi ambienti di elaborazione disponibili in AWS Batch.
-
Scopri di più sulle Job queues e sulle loro diverse opzioni di pianificazione.
-
Scopri di più sulle definizioni di Job e sulle diverse opzioni di configurazione.
-
Scopri di più sui diversi tipi di lavori.