Fehlerbehebung für AWS Batch - 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.

Fehlerbehebung für AWS Batch

Möglicherweise müssen Sie Probleme beheben, die mit Ihren Computerumgebungen, Auftragswarteschlangen, Jobdefinitionen oder Jobs zusammenhängen. In diesem Kapitel wird beschrieben, wie Sie diese Probleme in IhrerAWS Batch Umgebung beheben und beheben können.

AWS Batchverwendet IAM-Richtlinien, Rollen und Berechtigungen und läuft auf der Amazon EC2-, Amazon ECS- und Amazon Elastic Kubernetes Service Service-Infrastruktur.AWS Fargate Informationen zur Behebung von Problemen im Zusammenhang mit diesen Diensten finden Sie im Folgenden:

AWS Batch

INVALIDDatenverarbeitungsumgebung

Möglicherweise haben Sie eine verwaltete Computerumgebung falsch konfiguriert. Wenn Sie dies getan haben, geht die Computerumgebung in einenINVALID Zustand über und es können keine Stellen zur Vermittlung akzeptiert werden. In den folgenden Abschnitten werden die möglichen Ursachen und die Behebung von Problemen anhand der Ursache beschrieben.

Falscher Rollenname oder ARN

Die häufigste Ursache dafür, dass eine Rechenumgebung in einenINVALID Status wechselt, ist, dass dieAWS Batch Servicerolle oder die Amazon EC2 Spot Fleet-Rolle einen falschen Namen oder Amazon Resource Name (ARN) hat. Dies ist häufiger bei Computerumgebungen der Fall, die mit denAWS CLI oder denAWS SDKs erstellt wurden. Wenn Sie eine Rechenumgebung in erstellenAWS Management Console,AWS Batch hilft Ihnen das bei der Auswahl der richtigen Service- oder Spot-Fleet-Rollen. Nehmen wir jedoch an, Sie geben den Namen oder den ARN manuell ein und geben sie falsch ein. Dann ist auch die resultierende RechenumgebungINVALID.

Wenn Sie den Namen oder ARN für ein IAM jedoch manuell in einenAWS CLI Befehl oder Ihren SDK-Code eingeben,AWS Batch kann die Zeichenfolge nicht validiert werden. Es muss den schlechten Wert akzeptieren und versuchen, die Umwelt zu schaffen. WennAWS Batch die Umgebung nicht erstellt werden kann, wechselt die Umgebung in einenINVALID Zustand, und es werden die folgenden Fehler angezeigt.

Bei einer ungültigen Servicerolle:

CLIENT_ERROR - Not authorized to perform sts:AssumeRole (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: dc0e2d28-2e99-11e7-b372-7fcc6fb65fe7)

Bei einer ungültigen Spot-Flottenrolle:

CLIENT_ERROR - Parameter: SpotFleetRequestConfig.IamFleetRole is invalid. (Service: AmazonEC2; Status Code: 400; Error Code: InvalidSpotFleetRequestConfig; Request ID: 331205f0-5ae3-4cea-bac4-897769639f8d) Parameter: SpotFleetRequestConfig.IamFleetRole is invalid

Eine häufige Ursache für dieses Problem ist, wenn Sie nur den Namen einer IAM-Rolle angeben, wenn Sie dieAWS CLI oder dieAWS SDKs verwenden, und nicht den vollständigen Amazon-Ressourcennamen (ARN). Dies liegt daran, dass der ARN je nachdem, wie Sie die Rolle erstellt haben, möglicherweise einaws-service-role Pfadpräfix enthält. Wenn Sie dieAWS Batch Servicerolle beispielsweise manuell mithilfe der Prozeduren in erstellenAWS Batch-Servicerolle, könnte Ihre Servicerolle ARN wie folgt aussehen:

arn:aws:iam::123456789012:role/AWSBatchServiceRole

Wenn Sie die Servicerolle jedoch heute im Rahmen des Assistenten für die erste Ausführung der Konsole erstellt haben, sieht Ihr Service-Rollen-ARN möglicherweise wie folgt aus:

arn:aws:iam::123456789012:role/aws-service-role/AWSBatchServiceRole

Wenn Sie nur den Namen einer IAM-Rolle bei derAWS CLI oder derAWS SDKs angeben,AWS Batch geht davon aus, dass Ihr ARN dasaws-service-role -Pfadpräfix nicht verwendet. Aus diesem Grund empfehlen wir, dass Sie den vollständigen ARN für Ihre IAM-Rollen beim Erstellen von Datenverarbeitungsumgebungen angeben.

Informationen zum Reparieren einer Computerumgebung, die auf diese Weise falsch konfiguriert wurde, finden Sie unterReparatur einerINVALID Computerumgebung.

Reparatur einerINVALID Computerumgebung

Wenn sich eine Computerumgebung in einemINVALID Zustand befindet, aktualisieren Sie sie, um den ungültigen Parameter zu reparieren. Aktualisieren Sie für eineFalscher Rollenname oder ARN die Rechenumgebung mit der richtigen Servicerolle.

So Reparieren Sie eine falsch konfigurierte Datenverarbeitungsumgebung
  1. Öffnen Sie dieAWS Batch Konsole unter https://console.aws.amazon.com/batch/.

  2. Wählen Sie die zu verwendende AWS-Region in der Navigationsleiste aus.

  3. Wählen Sie im Navigationsbereich Datenverarbeitungs-Umgebungen aus.

  4. Wählen Sie auf der Seite Datenverarbeitungs-Umgebungen das Optionsfeld neben der zu bearbeitenden Datenverarbeitungsumgebung und dann Bearbeiten aus.

  5. Wählen Sie auf der Seite Computerumgebung aktualisieren unter Servicerolle die IAM-Rolle aus, die Sie mit Ihrer Rechenumgebung verwenden möchten. Die AWS Batch-Konsole zeigt nur mit der richtigen Vertrauensstellung für Datenverarbeitungsumgebungen an.

  6. Wählen Sie Speichern aus, um Ihre Datenverarbeitungsumgebung zu aktualisieren.

Jobs stecken in einemRUNNABLE Status fest

Angenommen, Ihre Rechenumgebung enthält Rechenressourcen, Ihre Jobs werden jedoch nicht über diesenRUNNABLE Status hinaus bearbeitet. Dann gibt es wahrscheinlich etwas, das verhindert, dass die Jobs tatsächlich auf einer Rechenressource platziert werden. Im Folgenden sind einige häufige Ursachen für dieses Problem aufgeführt:

Derawslogs Protokolltreiber ist auf Ihren Rechenressourcen nicht konfiguriert

AWS BatchJobs senden ihre Protokollinformationen an CloudWatch Logs. Um die entsprechende Funktion zu aktivieren, müssen Sie Ihre Datenverarbeitungsressourcen so konfigurieren, dass sie den awslogs-Protokolltreiber verwenden. Angenommen, Sie basieren Ihr Rechenressourcen-AMI auf dem für Amazon ECS optimierten AMI (oder Amazon Linux). Dann ist dieser Treiber standardmäßig beimecs-init Paket registriert. Nehmen wir nun an, Sie verwenden ein anderes Basis-AMI. Anschließend müssen Sie überprüfen, ob derawslogs Protokolltreiber als verfügbarer Protokolltreiber mit derECS_AVAILABLE_LOGGING_DRIVERS Umgebungsvariablen angegeben ist, wenn der Amazon ECS-Container-Agent gestartet wird. Weitere Informationen erhalten Sie unter AMI-Spezifikation für Rechenressourcen und Erstellen eines Compute-Ressourcen-AMI.

Unzureichende Ressourcen

Wenn Ihre Jobdefinitionen mehr CPU- oder Speicherressourcen angeben, als Ihre Rechenressourcen zuweisen können, werden Ihre Jobs niemals platziert. Nehmen wir zum Beispiel an, dass Ihr Job 4 GiB Arbeitsspeicher angibt und Ihre Rechenressourcen weniger als die verfügbaren Ressourcen haben. Dann ist es so, dass der Job nicht auf diese Rechenressourcen platziert werden kann. In diesem Fall müssen Sie den angegebenen Speicher in Ihrer Auftragsdefinition reduzieren oder Ihrer Umgebung größere Datenverarbeitungsressourcen hinzufügen. Ein Teil des Speichers ist für den Amazon-ECS-Container-Agenten und andere wichtige Systemprozesse reserviert. Weitere Informationen finden Sie unter DatenverarbeitungsressourceSpeicherverwaltung.

Kein Internetzugang für Datenverarbeitungsressourcen

Datenverarbeitungsressourcen benötigen einen externen Netzwerkzugriff, um mit dem Amazon-ECS-Service-Endpunkt zu kommunizieren. Dies kann über einen Schnittstellen-VPC-Endpunkt oder über Ihre Datenverarbeitungsressourcen mit öffentlichen IP-Adressen sein.

Weitere Informationen zu Interface-VPC-Endpunkten finden Sie unter Amazon-ECS-Schnittstellen-VPC-Endpunkte (AWS PrivateLink) im Amazon Elastic Container Service-Entwicklerhandbuch.

Wenn Sie keinen Schnittstellen-VPC-Endpunkt konfiguriert haben und Ihre Datenverarbeitungsressourcen keine öffentlichen IP-Adressen haben, müssen Sie Netzwerkadressübersetzung (Network Address Translation, NAT) verwenden, um diesen Zugriff zur Verfügung zu stellen. Weitere Informationen finden Sie unter NAT-Gateways im Amazon VPC-Benutzerhandbuch. Weitere Informationen finden Sie unter Erstellen einer VPC.

Amazon EC2 EC2-Instance-Limits erreicht

Die Anzahl der Amazon EC2 EC2-Instances, die Ihr Konto in einemAWS-Region starten kann, hängt von Ihrem EC2-Instance-Kontingent ab. Bestimmte Instanztypen haben auch ein per-instance-type Kontingent. Weitere Informationen zum Amazon EC2-Instance-Kontingent Ihres Kontos, einschließlich der Beantragung einer Limiterhöhung, finden Sie unter Amazon EC2 Service Limits im Amazon EC2 EC2-Benutzerhandbuch für Linux-Instances.

Amazon ECS-Container-Agent ist nicht installiert

Der Amazon ECS-Container-Agent muss auf dem Amazon Machine Image (AMI) installiert sein, damit JobsAWS Batch ausgeführt werden können. Der Amazon-ECS-Container-Agent ist standardmäßig auf Amazon ECS-optimierten AMIs installiert. Weitere Informationen über den Amazon-ECS-Container-Agenten finden Sie unter Amazon Elastic Container Service-Entwicklerhandbuch.

Weitere Informationen findest du unter Warum bleibt meinAWS Batch-Job im Status RUNNABLE hängen? im AWSKnowledge Center.

Spot-Instances, die bei der Erstellung nicht markiert wurden

Spot-Instance-Tagging für AWS Batch-Datenverarbeitungsressourcen wird seit dem 25. Oktober 2017 unterstützt. Bisher enthielt die empfohlene IAM-Managed Policy (AmazonEC2SpotFleetRole) für die Amazon EC2 Spot Fleet-Rolle keine Berechtigungen zum Taggen von Spot-Instances beim Start. Die neue empfohlene IAM-Managed Policy heißtAmazonEC2SpotFleetTaggingRole. Es unterstützt das Taggen von Spot-Instances beim Start.

Um das Spot-Instance-Tagging bei der Erstellung zu korrigieren, gehen Sie wie folgt vor, um die aktuell empfohlene IAM-Managed Policy auf Ihre Amazon EC2 Spot Fleet-Rolle anzuwenden. Auf diese Weise haben alle future Spot-Instances, die mit dieser Rolle erstellt werden, die Berechtigung, Instance-Tags anzuwenden, wenn sie erstellt werden.

So wenden Sie die aktuelle IAM-Managed Policy auf Ihre Amazon EC2 Spot Fleet-Rolle an
  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie Rollen und dann Ihre Amazon EC2 Spot Fleet-Rolle aus.

  3. Wählen Sie Attach policy (Richtlinie anfügen) aus.

  4. Wählen Sie AmazonEC2 ausSpotFleetTaggingRole und wählen Sie Richtlinie anhängen.

  5. Wählen Sie erneut Ihre Amazon EC2 Spot Fleet-Rolle aus, um die vorherige Richtlinie zu entfernen.

  6. Wählen Sie das X rechts neben der SpotFleetRoleAmazonEC2-Richtlinie aus und wählen Sie Trennen.

Spot-Instances werden nicht herunterskaliert

AWS Batchführte am 10. März 2021 die AWSServiceRoleForBatchservicegebundene Rolle ein. Wenn imserviceRole Parameter der Rechenumgebung keine Rolle angegeben ist, wird diese dienstverknüpfte Rolle als Dienstrolle verwendet. Nehmen wir jedoch an, dass die serviceverknüpfte Rolle in einer EC2-Spot-Rechenumgebung verwendet wird, die verwendete Spot-Rolle jedoch nicht die von AmazonEC2SpotFleetTaggingRole verwaltete Richtlinie enthält. Dann wird die Spot-Instance nicht herunterskaliert. Infolgedessen erhalten Sie eine Fehlermeldung mit der folgenden Meldung: „Sie sind nicht berechtigt, diesen Vorgang auszuführen.“ Gehen Sie wie folgt vor, um die Spot-Flottenrolle zu aktualisieren, die Sie imspotIamFleetRole Parameter verwenden. Weitere Informationen finden Sie unter Verwenden von serviceverknüpften Rollen und Erstellen einer Rolle zum Delegieren von Berechtigungen an einenAWS -Service im IAM-Benutzerhandbuch.

Hängen Sie die von AmazonEC2SpotFleetTaggingRole verwaltete Richtlinie an Ihre Spot-Fleet-Rolle in derAWS Management Console

So wenden Sie die aktuelle IAM-Managed Policy auf Ihre Amazon EC2 Spot Fleet-Rolle an
  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie Rollen und dann Ihre Amazon EC2 Spot Fleet-Rolle aus.

  3. Wählen Sie Attach policy (Richtlinie anfügen) aus.

  4. Wählen Sie AmazonEC2 ausSpotFleetTaggingRole und wählen Sie Richtlinie anhängen.

  5. Wählen Sie erneut Ihre Amazon EC2 Spot Fleet-Rolle aus, um die vorherige Richtlinie zu entfernen.

  6. Wählen Sie das X rechts neben der SpotFleetRoleAmazonEC2-Richtlinie aus und wählen Sie Trennen.

Hängen Sie Ihre Spot-Flottenrolle mit der von AmazonEC2SpotFleetTaggingRole verwalteten Policy anAWS CLI

Bei den Beispielbefehlen wird davon ausgegangen, dass Ihre Amazon EC2 Spot Fleet-Rolle den Namen AmazonEC2 trägtSpotFleetRole. Wenn Ihre Rolle einen anderen Namen verwendet, passen Sie die Befehle entsprechend an.

Um die von AmazonEC2SpotFleetTaggingRole verwaltete Richtlinie an Ihre Spot-Fleet-Rolle anzuhängen
  1. Um die SpotFleetTaggingRoleAmazonEC2-Managed IAM-Richtlinie an Ihre SpotFleetRoleAmazonEC2-Rolle anzuhängen, führen Sie den folgenden Befehl mit dem ausAWS CLI.

    $ aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole \ --role-name AmazonEC2SpotFleetRole
  2. Um die SpotFleetRoleAmazonEC2-Managed IAM-Richtlinie von Ihrer SpotFleetRoleAmazonEC2-Rolle zu trennen, führen Sie den folgenden Befehl mit dem ausAWS CLI.

    $ aws iam detach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetRole \ --role-name AmazonEC2SpotFleetRole

Secrets Manager Manager Manager -Secrets Manager -Secrets Manager

Wenn Sie ein AMI mit einem Amazon ECS-Agenten verwenden, der älter als Version 1.16.0-1 ist, müssen Sie die Amazon ECS-Agent-Konfigurationsvariable verwenden,ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true um diese Funktion verwenden zu können. Sie können sie der./etc/ecs/ecs.config Datei hinzufügen, wenn Sie diese Instance erstellen. Sie können es auch zu einer vorhandenen Instance hinzufügen. Wenn Sie sie einer vorhandenen Instance hinzufügen, müssen Sie den ECS-Agenten nach dem Hinzufügen neu starten. Weitere Informationen finden Sie unter Amazon ECS Container Agent Configuration im Entwicklerhandbuch zum Amazon Elastic Container Service.

Die Ressourcenanforderungen für die Jobdefinition können nicht außer Kraft gesetzt werden

Die Speicher- und vCPU-Überschreibungen, die in dermemory undvcpus -Mitgliedern der ContainerOverrides-Struktur angegeben sind, die an übergeben wurden SubmitJob, können die Speicher- und vCPU-Anforderungen, die in der ResourceRequirements-Struktur in der Job-Definition.

Wenn Sie versuchen, diese Ressourcenanforderungen zu überschreiben, wird möglicherweise die folgende Fehlermeldung angezeigt:

„Dieser Wert wurde in einem veralteten Schlüssel übermittelt und kann zu einem Konflikt mit dem Wert führen, der in den Ressourcenanforderungen der Jobdefinition angegeben ist.“

Um dies zu korrigieren, geben Sie die Speicher- und vCPU-Anforderungen im ResourceRequirements-Mitglied der ContainerOverrides an. Zum Beispiel, wenn Ihre Speicher- und vCPU-Überschreibungen in den folgenden Zeilen angegeben sind.

"containerOverrides": { "memory": 8192, "vcpus": 4 }

Ändern Sie sie folgendermaßen:

"containerOverrides": { "resourceRequirements": [ { "type": "MEMORY", "value": "8192" }, { "type": "VCPU", "value": "4" } ], }

Nehmen Sie dieselbe Änderung an den Speicher- und vCPU-Anforderungen vor, die im ContainerProperties-Objekt in der Jobdefinition angegeben sind. Zum Beispiel, wenn Ihre Speicher- und vCPU-Anforderungen in den folgenden Zeilen angegeben sind.

{ "containerProperties": { "memory": 4096, "vcpus": 2, }

Ändern Sie sie folgendermaßen:

"containerProperties": { "resourceRequirements": [ { "type": "MEMORY", "value": "4096" }, { "type": "VCPU", "value": "2" } ], }

AWS Batch auf Amazon EKS

INVALIDDatenverarbeitungsumgebung

Möglicherweise haben Sie eine verwaltete Computerumgebung falsch konfiguriert. Wenn Sie dies getan haben, geht die Computerumgebung in einenINVALID Zustand über und es können keine Stellen zur Vermittlung akzeptiert werden. In den folgenden Abschnitten werden die möglichen Ursachen und die Behebung von Problemen anhand der Ursache beschrieben.

Nicht unterstützteKubernetes Version

Wenn die Rechenumgebung auf einer nicht unterstütztenKubernetes Version erstellt wurde, ä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

Um dieses Problem zu beheben, löschen Sie die Rechenumgebung und erstellen Sie sie dann erneut mit einer unterstütztenKubernetes Version.

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.

Um dieses Problem zu beheben, geben Sie eine unterstützteKubernetes Version an, wenn Sie eine API-Operation verwenden, um eine Rechenumgebung zu erstellen oder zu aktualisieren.

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.

Instance-Profil ist nicht vorhanden

Wenn das angegebene Instanzprofil nicht existiert, wird der Status der RechenumgebungAWS Batch auf Amazon EKS in geändertINVALID. In demstatusReason Parameter wird ein Fehlersatz angezeigt, der dem folgenden ähnelt:

CLIENT_ERROR - Instance profile arn:aws:iam::...:instance-profile/<name> does not exist

Sie lösen dieses Problem, geben Sie ein funktionierendes Instance-Profil an oder erstellen Sie ein funktionierendes Instance-Profil. Weitere Informationen finden Sie unter IAM-Rolle für Amazon EKS-Knoten im Amazon EKS-Benutzerhandbuch.

UngültigerKubernetes Namespace

Wenn EKSAWS Batch auf Amazon den Namespace für die Rechenumgebung nicht validieren kann, wird der Status der Rechenumgebung in geändertINVALID. Dieses Problem kann beispielsweise auftreten, wenn der Namespace nicht existiert.

ImstatusReason Parameter wird eine Fehlermeldung angezeigt, die der folgenden ähnelt:

CLIENT_ERROR - Unable to validate Kubernetes Namespace

Dieses Problem kann auftreten, wenn eine der folgenden Bedingungen zutrifft:

  • DieKubernetes Namespace-Zeichenfolge imCreateComputeEnvironment Aufruf existiert nicht. Weitere Informationen finden Sie unter CreateComputeEnvironment.

  • Die erforderlichen RBAC -Berechtigungen zur Verwaltung des Namespaces sind nicht korrekt konfiguriert.

  • AWS Batchhat keinen Zugriff auf den Amazon EKSKubernetes API-Serverendpunkt.

Informationen zum Beheben dieses Problems finden Sie unterStellen Sie sicher, dass deraws-auth ConfigMap korrekt konfiguriert ist. Weitere Informationen finden Sie unter Erste Schritte mitAWS Batch auf Amazon EKS.

Datenverarbeitungsumgebung

Angenommen, Sie löschen einen Amazon EKS-Cluster, bevor Sie die angehängteAWS Batch Amazon EKS-Rechenumgebung löschen. Dann wird der Status der Computerumgebung in geändertINVALID. In diesem Szenario funktioniert die Rechenumgebung nicht ordnungsgemäß, wenn Sie den Amazon EKS-Cluster mit demselben Namen neu erstellen.

Um dieses Problem zu lösen, löschen Sie die DatenverarbeitungsumgebungAWS Batch auf Amazon EKS und erstellen Sie sie erneut.

Knoten treten dem Amazon EKS-Cluster nicht bei

AWS Batchbei Amazon EKS wird eine Rechenumgebung herunterskaliert, wenn festgestellt wird, dass nicht alle Knoten dem Amazon EKS-Cluster beigetreten sind. Wenn EKSAWS Batch auf Amazon die Rechenumgebung herunterskaliert, wird der Status der Rechenumgebung in geändertINVALID.

Anmerkung

AWS Batchändert den Status der Computerumgebung nicht sofort, sodass Sie das Problem debuggen können.

In demstatusReason Parameter wird eine Fehlermeldung angezeigt, die einer der folgenden ähnelt:

Your compute environment has been INVALIDATED and scaled down because none of the instances joined the underlying ECS Cluster. Common issues preventing instances joining are the following: VPC/Subnet configuration preventing communication to ECS, incorrect Instance Profile policy preventing authorization to ECS, or customized AMI or LaunchTemplate configurations affecting ECS agent.

Your compute environment has been INVALIDATED and scaled down because none of the nodes joined the underlying EKS Cluster. Common issues preventing nodes joining are the following: networking configuration preventing communication to EKS Cluster, incorrect EKS Instance Profile or Kubernetes RBAC policy preventing authorization to EKS Cluster, customized AMI or LaunchTemplate configurations affecting EKS/Kubernetes node bootstrap.

Bei Verwendung eines standardmäßigen Amazon EKS-AMI sind die häufigsten Ursachen für dieses Problem die folgenden:

AWS Batchbei Amazon EKS ist der Job imRUNNABLE Status „hängen geblieben“

Einaws-authConfigMap wird automatisch erstellt und auf Ihren Cluster angewendet, wenn Sie eine verwaltete Knotengruppe erstellen oder wenn Sie eine Knotengruppe mit erstelleneksctl. Sie wird anfänglich erstellt, um Knoten zu erlauben, zu erlauben, zu erlauben, zu erlauben, aber auch nicht. Sie verwenden jedoch auch dieaws-authConfigMap, um RBAC hinzuzufügen.

Gehen Sie wie folgt vor, um zu überprüfen, ob der korrekt konfiguriertaws-authConfigMap ist:

  1. Rufen Sie die zugeordneten Rollen ab inaws-authConfigMap:

    $ kubectl get configmap -n kube-system aws-auth -o yaml
  2. Stellen Sie sicher, dass der wie folgt konfiguriertroleARN ist:

    rolearn: arn:aws:iam::aws_account_number:role/AWSServiceRoleForBatch

    Anmerkung

    Sie können auch die Protokolle der Amazon EKS-Kontrollebene überprüfen. Weitere Informationen finden Sie unter Protokollierung auf der Amazon EKS Steuerungsebene im Amazon EKS-Benutzerhandbuch.

Um ein Problem zu lösen, bei dem ein Job in einemRUNNABLE Status feststeckt, empfehlen wir, das Manifest erneut anzuwenden.kubectl Weitere Informationen finden Sie unter Schritt 1: Vorbereiten Ihres EKS-Clusters fürAWS Batch. Oder, Sie können es verwendenkubectl, um das manuell zu bearbeitenaws-authConfigMap. Weitere Informationen finden Sie unter Aktivieren des IAM-Benutzer- und Rollenzugriffs auf Ihren Cluster im Amazon EKS-Benutzerhandbuch.

Stellen Sie sicher, dass deraws-auth ConfigMap korrekt konfiguriert ist

Gehen Sie wie folgt vor, um zu überprüfen, ob der korrekt konfiguriertaws-authConfigMap ist:

  1. Rufen Sie die zugeordneten Rollen ab inaws-authConfigMap:

    $ kubectl get configmap -n kube-system aws-auth -o yaml
  2. Stellen Sie sicher, dass der wie folgt konfiguriertroleARN ist:

    rolearn: arn:aws:iam::aws_account_number:role/AWSServiceRoleForBatch

    Anmerkung

    Der Pfadaws-service-role/batch.amazonaws.com/ wurde aus dem ARN der serviceverknüpften Rolle entfernt. Dies liegt an einem Problem mit deraws-auth Konfigurationszuordnung. Weitere Informationen finden Sie unter Rollen mit Pfaden funktionieren nicht, wenn der Pfad in ihrem ARN in der enthalten istaws-authconfigmap.

    Anmerkung

    Sie können auch die Protokolle der Amazon EKS-Kontrollebene überprüfen. Weitere Informationen finden Sie unter Protokollierung auf der Amazon EKS Steuerungsebene im Amazon EKS-Benutzerhandbuch.

Um ein Problem zu lösen, bei dem ein Job in einemRUNNABLE Status feststeckt, empfehlen wir, das Manifest erneut anzuwenden.kubectl Weitere Informationen finden Sie unter Schritt 1: Vorbereiten Ihres EKS-Clusters fürAWS Batch. Oder, Sie können es verwendenkubectl, um das manuell zu bearbeitenaws-authConfigMap. Weitere Informationen finden Sie unter Aktivieren des IAM-Benutzer- und Rollenzugriffs auf Ihren Cluster im Amazon EKS-Benutzerhandbuch.

RBAC-Berechtigungen oder -Bindungen sind nicht richtig konfiguriert

Wenn Sie RBAC-Berechtigungen oder Bindungsprobleme haben, überprüfen Sie, ob dieaws-batchKubernetes Rolle auf denKubernetes Namespace zugreifen kann:

$ kubectl get namespace namespace --as=aws-batch
$ kubectl auth can-i get ns --as=aws-batch

Sie können denkubectl describe Befehl auch verwenden, um die Berechtigungen für eine Cluster-Rolle oder einenKubernetes Cluster-Namespace einzusehen.

$ kubectl describe clusterrole aws-batch-cluster-role

Es folgt eine Beispielausgabe.

Name: aws-batch-cluster-role Labels: <none> Annotations: <none> PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- configmaps [] [] [get list watch] nodes [] [] [get list watch] pods [] [] [get list watch] daemonsets.apps [] [] [get list watch] deployments.apps [] [] [get list watch] replicasets.apps [] [] [get list watch] statefulsets.apps [] [] [get list watch] clusterrolebindings.rbac.authorization.k8s.io [] [] [get list] clusterroles.rbac.authorization.k8s.io [] [] [get list] namespaces [] [] [get]
$ kubectl describe role aws-batch-compute-environment-role -n my-aws-batch-namespace

Es folgt eine Beispielausgabe.

Name: aws-batch-compute-environment-role Labels: <none> Annotations: <none> PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- pods [] [] [create get list watch delete patch] serviceaccounts [] [] [get list] rolebindings.rbac.authorization.k8s.io [] [] [get list] roles.rbac.authorization.k8s.io [] [] [get list]

Sie lösen dieses Problem, wenden Sie die RBACrolebinding -Befehle und -Befehle erneut an. Weitere Informationen finden Sie unter Schritt 1: Vorbereiten Ihres EKS-Clusters fürAWS Batch.