Amazon EKS-Rechenumgebungen - AWS Batch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Amazon EKS-Rechenumgebungen

Erste Schritte mitAWS Batch auf Amazon EKSbietet eine kurze Anleitung zur Erstellung von EKS-Rechenumgebungen. Dieser Abschnitt enthält weitere Informationen zu EKS-Rechenumgebungen.

Standard-AMI-Auswahl

Wenn Sie eine EKS-Rechenumgebung erstellen, müssen Sie kein Amazon Machine Image (AMI) angeben. AWS Batchwählt ein für Amazon EKS optimiertes AMI aus, das auf derKubernetes Version und den Instance-Typen basiert, die in Ihrer CreateComputeEnvironmentAnfrage angegeben sind. Im Allgemeinen empfehlen wir, die Standard-AMI-Auswahl zu verwenden. Weitere Informationen zu Amazon EKS-optimierten AMIs finden Sie unter Amazon EKS-optimierte Amazon Linux-AMIs im Amazon EKS-Benutzerhandbuch.

Führen Sie den folgenden Befehl aus, um zu sehen, welcher AMI-TypAWS Batch für Ihre EKS-Rechenumgebung ausgewählt wurde. Dieses folgende Beispiel ist ein Nicht-GPU-Instanztyp.

# compute CE example: indicates Batch has chosen the AL2 x86 or ARM EKS 1.22 AMI, depending on instance types $ aws batch describe-compute-environments --compute-environments My-Eks-CE1 \ | jq '.computeEnvironments[].computeResources.ec2Configuration' [ { "imageType": "EKS_AL2", "imageKubernetesVersion": "1.22" } ]

Das folgende Beispiel ist ein GPU-Instanztyp.

# GPU CE example: indicates Batch has choosen the AL2 x86 EKS Accelerated 1.22 AMI $ aws batch describe-compute-environments --compute-environments My-Eks-GPU-CE \ | jq '.computeEnvironments[].computeResources.ec2Configuration' [ { "imageType": "EKS_AL2_NVIDIA", "imageKubernetesVersion": "1.22" } ]

Unterstützte Kubernetes-Versionen

AWS Batchauf Amazon unterstützt EKS derzeit die folgendenKubernetes Versionen:

  • 1.24

  • 1.23

  • 1.22

  • 1.21

  • 1.20

Anmerkung

Wir empfehlenKubernetes Version 1.22 oder höher.

Wenn Sie eine Rechenumgebung mit einer nicht unterstütztenKubernetes Version erstellen, ändert EKSAWS Batch auf Amazon den Status der Rechenumgebung inINVALID. In demstatusReason Parameter wird ein Fehlersatz angezeigt, der dem folgenden ähnelt.

reason=CLIENT_ERROR - ... EKS Cluster version [1.xx] is unsupported

Wenn Sie beim Erstellen oder Aktualisieren einer Rechenumgebung mithilfe der CreateComputeEnvironmentUpdateComputeEnvironmentOder-API-Operation eine nicht unterstützteKubernetes Version angeben, wird eine Fehlermeldung angezeigt, die der folgenden ähnelt.

At least one imageKubernetesVersion in EC2Configuration is not supported.

KubernetesVersion der Computerumgebung aktualisieren

MitAWS Batch können Sie dieKubernetes Version einer Rechenumgebung aktualisieren, um EKS-Cluster-Upgrades zu unterstützen. DieKubernetes Version einer Rechenumgebung ist die EKS-AMI-Version für dieKubernetes Knoten, die zur Ausführung von JobsAWS Batch gestartet werden. Sie können einKubernetes Versionsupgrade auf ihren EKS-Nodes durchführen, bevor oder nachdem Sie die Version der Steuerungsebene des EKS-Clusters aktualisiert haben. Wir empfehlen, die Knoten nach dem Upgrade der Steuerungsebene zu aktualisieren. Weitere Informationen finden Sie unter Aktualisieren einer AmazonKubernetes EKS-Cluster-Version im Amazon EKS-Benutzerhandbuch.

Verwenden Sie den UpdateComputeEnvironmentAPI-Vorgang, um dieKubernetes Version einer Rechenumgebung zu aktualisieren.

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

Geteilte Verantwortung derKubernetes Knoten

Die Wartung der Computerumgebungen ist eine gemeinsame Verantwortung.

  • Ändern oder entfernen Sie keineAWS Batch Knoten, Labels, Flecken, Namespaces, Startvorlagen oder Auto-Scaling-Gruppen. Fügen SieAWS Batch verwalteten Knoten keine Verunreinigungen hinzu. Wenn Sie eine dieser Änderungen vornehmen, kann Ihre Computerumgebung nicht unterstützt werden und es kommt zu Fehlern, einschließlich inaktiver Instanzen.

  • Richten Sie Ihre Pods nicht aufAWS Batch verwaltete Knoten aus. Wenn Sie Ihre Pods auf die verwalteten Knoten ausrichten, kommt es zu einer fehlerhaften Skalierung und zu festgefahrenen Job-Warteschlangen. Führen Sie Workloads aus, die nicht verwendet werden,AWS Batch auf selbstverwalteten Knoten oder verwalteten Knotengruppen. Weitere Informationen finden Sie unter Verwaltete Knotengruppen im Amazon EKS-Benutzerhandbuch.

  • Sie können als Ziel festlegenDaemonSet, dassAWS Batch es auf verwalteten Knoten ausgeführt wird. Weitere Informationen finden Sie unter DaemonSetAufAWS Batch verwalteten Knoten ausführen.

AWS Batchaktualisiert die AMIs der Computerumgebung nicht automatisch. Es liegt in Ihrer Verantwortung, sie zu aktualisieren. Führen Sie den folgenden Befehl aus, um Ihre AMIs auf die neueste AMI-Version zu aktualisieren.

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

AWS Batchaktualisiert dieKubernetes Version nicht automatisch. Führen Sie den folgenden Befehl aus, um dieKubernetes Version Ihrer Computerumgebung auf 1.23 zu aktualisieren.

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

Bei der Aktualisierung auf ein neueres AMI oder dieKubernetes Version können Sie angeben, ob Jobs beendet werden sollen, wenn sie aktualisiert werden (terminateJobsOnUpdate) und wie lange gewartet werden muss, bis eine Instance ersetzt wird, wenn laufende Jobs nicht abgeschlossen werden (jobExecutionTimeoutMinutes.) Weitere Informationen finden Sie unterAktualisierung von Computerumgebungen und die Infrastrukturaktualisierungsrichtlinie (UpdatePolicy), die im UpdateComputeEnvironmentAPI-Vorgang festgelegt wurde.

DaemonSetAufAWS Batch verwalteten Knoten ausführen

AWS Batchsetzt Verschmutzungen aufAWS Batch verwaltetenKubernetes Knoten ein. Sie können Folgendes als ZielDaemonSet für die Ausführung aufAWS Batch verwalteten Knoten anvisierentolerations.

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

Eine andere Möglichkeit, dies zu tun, ist der folgendetolerations.

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

Anpassen mit Startvorlagen

AWS Batchauf Amazon unterstützt EKS Startvorlagen. Es gibt Einschränkungen, was Ihre Startvorlage tun kann.

Wichtig

AWS Batchläuft/etc/eks/bootstrap.sh. Führen Sie es nicht/etc/eks/bootstrap.sh in Ihrer Startvorlage oder Ihrencloud-inituser-data Skripten aus. Sie können zusätzliche Parameter neben dem--kubelet-extra-args Parameter zu bootstrap.sh hinzufügen. Stellen Sie dazu dieAWS_BATCH_KUBELET_EXTRA_ARGS Variable in der/etc/aws-batch/batch.config Datei ein. Ausführliche Informationen finden Sie im folgenden Beispiel:

Anmerkung

Wenn die Startvorlage nach dem Aufruf geändert CreateComputeEnvironmentwird, UpdateComputeEnvironmentmuss sie aufgerufen werden, um die Version der Startvorlage zur Ersetzung zu evaluieren.

kubeletZusätzliche Argumente hinzufügen

AWS Batchunterstützt das Hinzufügen zusätzlicher Argumente zumkubelet Befehl. Eine Liste der unterstützten Parameter finden Sie kubeletin der KubernetesDokumentation. Im folgenden Beispiel--node-labels mylabel=helloworld wird derkubelet Befehlszeile hinzugefügt.

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

Montieren eines Amazon EFS Volumes

Sie können Startvorlagen verwenden, um Volumes auf dem Knoten zu mounten. Im folgenden Beispiel werden dieruncmd Einstellungencloud-configpackages und verwendet. Weitere Informationen finden Sie in der cloud-initDokumentation unter Cloud-Konfigurationsbeispielen.

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

Um dieses Volume im Job verwenden zu können, muss es im Parameter eksProperties zu hinzugefügt werden RegisterJobDefinition. Das folgende Beispiel ist ein großer Teil der Aufgabendefinition.

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

Im Knoten ist das Amazon EFS-Volume im/mnt/efs Verzeichnis gemountet. Im Container für den EKS-Job ist das Volume im/efs Verzeichnis gemountet.

IPv6-Support

AWS Batchunterstützt Amazon EKS-Cluster mit IPv6-Adressen. Für denAWS Batch Support sind keine Anpassungen erforderlich. Bevor Sie beginnen, empfehlen wir Ihnen jedoch, die Überlegungen und Bedingungen zu lesen, die unter Zuweisen von IPv6-Adressen zu Pods und Diensten im Amazon EKS-Benutzerhandbuch beschrieben sind.