Wie behebe ich Probleme, wenn ich ein AWS Fargate-Profil erstelle?

Lesedauer: 5 Minute
0

Ich habe Probleme beim Erstellen eines AWS Fargate-Profils.

Kurzbeschreibung

Ein Fargate-Profil ist ein Mechanismus, mit dem angegeben wird, welche Pods auf Fargate-Knoten in einem Amazon Elastic Kubernetes Service (Amazon EKS) -Cluster geplant sind.

Ein Fargate-Profil hat Selektoren, die mit jeder eingehenden Pod-Spezifikations-YAML-Datei übereinstimmen. Das Match muss erfolgreich sein und die Anforderungen von AWS Fargate müssen erfüllt sein, bevor der Pod auf Fargate-Knoten geplant wird. Der Pod ist mit Subnetzen und der im Fargate-Profil angegebenen AWS-Rolle Identity and Access Management (IAM) geplant.

Einige der Pod-Platzierungsregeln lauten wie folgt:

  • Wenn eine Pod-Spezifikation einen Namespace und eine Match-Label-Konfiguration hat, wird der Pod in das Fargate-Profil aufgenommen, das dem Namespace entspricht. Die Pod-Spezifikation muss auch mit den Bezeichnungen des Pod-Selektors übereinstimmen.
  • Wenn das Fargate-Profil mehrere Pod-Selektor-Konfigurationen hat, wird der geplante Pod verwendet, der einer der Pod-Selector-Konfigurationen entspricht.
  • Wenn eine Pod-Spezifikation mehreren Fargate-Profilen entspricht, wird der Pod gemäß einem zufälligen Fargate-Profil geplant. Dies tritt auf, sofern nicht die folgende Anmerkung in der Pod-Spezifikation angegeben ist: eks.amazonaws.com/fargate-profile.
  • Kubernetes-Affinitäts- und Anti-Affinitätsregeln gelten nicht und werden für Amazon EKS Fargate Pods nicht benötigt.

Lösung

Die folgenden Probleme treten häufig auf, wenn Sie ein Fargate-Profil erstellen:

Wie kann ich ein Fargate-Profil erstellen, um Pods auf Fargate-Knoten zu planen?

Sie können die Amazon EKS-Konsole, das AWS Command Line Interface (AWS CLI), das SDK oder eine API verwenden, um ein Fargate-Profil zu erstellen.

Wie kann ich ein Fargate-Profil mit AWS CloudFormation erstellen?

Verwenden Sie den CloudFormation-Ressourcentyp AWS: :EKS: :FargateProfile, um ein Fargate-Profil zu erstellen.

Wie kann ich die CoreDNS-Pods nur auf den Fargate-Knoten ausführen?

Standardmäßig ist CoreDNS so konfiguriert, dass es auf der Amazon EC2-Infrastruktur auf Amazon EKS-Clustern ausgeführt wird. Wenn Sie die CoreDNS-Pods auf Fargate Serverless Compute in Ihrem Cluster ausführen möchten, müssen Sie den Rollout-Neustart der CoreDNS-Bereitstellungen durchführen.

Wenn Sie Ihren Cluster mit eksctl und der Option**\ --fargate** erstellt haben, folgen Sie den Anweisungen in den nächsten Schritten.

**Hinweis:**Es ist eine bewährte Methode, eksctl zum Erstellen oder Aktualisieren von EKS-Clustern zu verwenden, da dies die Verwaltung der Clusterressourcen vereinfacht. Weitere Informationen finden Sie unter EKS Fargate-Unterstützung auf der eksctl-Website.

Was sind die Standardgrenzwerte für ein Fargate-Profil?

Die Standardgrenzwerte beim Erstellen eines Fargate-Profils sind:

  • Ein EKS-Cluster kann bis zu zehn Fargate-Profile haben.
  • Das Fargate-Profil kann bis zu fünf Selektoren haben.
  • Der Fargate-Profilwähler kann bis zu fünf Labelpaare haben.

Welche Pod-Ausführungsrolle muss im Fargate-Profil enthalten sein?

Die Pod-Ausführungsrolle ist eine IAM-Rolle, die vom Fargate-Knoten für AWS-API-Aufrufe verwendet wird. Die verwaltete Richtlinie AmazonEksFargatePodExecutionRolePolicy muss dieser Rolle zugeordnet werden.

Kubelet auf dem Fargate-Knoten verwendet diese IAM-Rolle, um mit dem API-Server zu kommunizieren. Diese Rolle muss in der aws-auth ConfigMap enthalten sein, damit sich Kubelet beim API-Server authentifizieren kann. Wenn Sie ein Fargate-Profil erstellen, fügt der Fargate-Workflow diese Rolle automatisch zur aws-auth ConfigMap des Clusters hinzu.

Wenn Ihre Fargate-Knoten als „Nicht bereit“ angezeigt werden, stellen Sie sicher, dass die Pod-Ausführungsrolle in aws-auth ConfigMap enthalten ist.

Das Folgende ist ein Beispiel für einen aws-auth configMap MapRoles-Abschnitt, nachdem Sie ein Fargate-Profil mit einer Pod-Ausführungsrolle erstellt haben:

mapRoles: |       - groups:
      - system:bootstrappers
      - system:nodes
      - system:node-proxier
      rolearn: <Pod_execution_role_ARN>
      username: system:node:{{SessionName}}

Wenn die aws-auth ConfigMap geändert wird, nachdem Sie das Fargate-Profil erstellt haben, erhalten Sie möglicherweise diese Warnung, wenn Pods auf Fargate-Knoten geplant sind:

Pod provisioning timed out (will retry) for pod: <pod_nginx>

Ich möchte Workloads zu EKS Fargate migrieren. Wie erstelle ich Subnetze und Sicherheitsgruppen zur Verwendung?

EKS Fargate unterstützt nur private Subnetze. Das bedeutet, dass es in den Routing-Tabellen, die an die in Ihrem Fargate-Profil angegebenen Subnetze angehängt sind, keine Standardroute zum Internet-Gateway gibt. Sie können also entweder ein NAT-Gateway oder VPC-Endpunkte für die Subnetze konfigurieren, die Sie für das Fargate-Profil verwenden möchten.

Die Cluster-Sicherheitsgruppe ist standardmäßig an Fargate-Knoten angehängt. Sie müssen keine spezielle Sicherheitsgruppe für diesen Zweck bereitstellen.

Wenn Sie VPC-Endpunkte für Ihre Subnetze verwenden, stellen Sie sicher, dass für den Cluster der private Endpunktzugriff aktiviert ist. Die mit den VPC-Endpunkten verknüpfte Sicherheitsgruppe muss über eine eingehende Regel verfügen, die den HTTPS-Port-443-Verkehr vom VPC-CIDR des Clusters zulässt.

Ich habe Fargate-Profile mit einem API-basierten Provisioner wie Terraform oder AWS CloudFormation erstellt. Warum befinden sich meine Fargate-Profile im Status CREATE\ _FAILED?

Es kann jeweils nur ein Fargate-Profil erstellt oder gelöscht werden. Wenn Sie ein Fargate-Profil löschen, können keine anderen Fargate-Profile gleichzeitig erstellt oder gelöscht werden.

Wenn Sie einen API-basierten Provisioner verwenden, muss die Erstellung oder Löschung eines Fargate-Profils beginnen, nachdem alle anderen Fargate-Profile erfolgreich erstellt oder gelöscht wurden.

Kann ich die Ressourcen (CPU, Speicher) angeben, die für Fargate-Knoten im Fargate-Profil bereitgestellt werden sollen?

Sie können die Menge der Ressourcen, die im Fargate-Profil bereitgestellt werden sollen, nicht direkt angeben. Es hat sich bewährt, Ressourcenanforderungen in Ihrer YAML-Datei mit Fargate-Pod-Spezifikationen anzugeben. Auf diese Weise kann der Fargate-Workflow dem Pod mindestens diese Menge an Ressourcen zuweisen. Weitere Informationen finden Sie auf der Kubernetes-Website unter Wie Kubernetes Ressourcenanforderungen und Grenzwerte anwendet.

Die Menge an vCPU oder Arbeitsspeicher, die nach der Ausführung des Befehls kubectl describe node angezeigt wird, entspricht möglicherweise nicht der Menge, die Sie für den Pod angefordert haben. Die Menge an Arbeitsspeicher und CPU, über die der Knoten verfügt, hängt von der verfügbaren Kapazität im Fargate-Ressourcenzuordnungspool ab. Die Abrechnung erfolgt auf der Grundlage des Betrags, den Sie in Ihrer Pod-Spezifikation angefordert haben. Die Menge an Ressourcen, die mit kubectl sichtbar sind, wird Ihnen nicht in Rechnung gestellt.

**Hinweis:**Wenn Sie keine Kombination aus vCPU und Arbeitsspeicher angeben, wird die kleinste verfügbare Kombination verwendet (0,25 vCPU und 0,5 GB Arbeitsspeicher).

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr