Festlegung, welche Pods beim Start AWS Fargate verwenden - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.

Festlegung, welche Pods beim Start AWS Fargate verwenden

Bevor Sie Pods auf Fargate in Ihrem Cluster planen, müssen Sie mindestens ein Fargate-Profil definieren, das angibt, welche Pods Fargate beim Start verwenden.

Als Administrator können Sie mithilfe eines Fargate-Profils angeben, welche Pods in Fargate ausgeführt werden. Sie können dies über die Selektoren des Profils tun. Sie können bis zu fünf Selektoren zu jedem Profil hinzufügen. Jeder Selektor muss einen Namespace enthalten. Der Selector kann auch Labels enthalten. Das Label-Feld besteht aus mehreren optionalen Schlüssel-Wert-Paaren. Pods, die den Selektoren entsprechen, werden auf Fargate geplant. Pods werden mit einem Namespace und den Labels abgeglichen, die im Selektor angegeben sind. Wenn ein Namespace-Selektor ohne Labels definiert ist, versucht Amazon EKS, alle Pods, die in diesem Namespace ausgeführt werden, mithilfe des Profils in Fargate zu planen. Wenn ein zu planender Pod mit einem der Selektoren im Fargate-Profil übereinstimmt, wird dieser Pod in Fargate geplant.

Wenn ein Pod mit mehreren Fargate-Profilen übereinstimmt, können Sie angeben, welches Profil ein Pod verwendet, indem Sie der Pod-Spezifikation das folgende Kubernetes-Label hinzufügen: eks.amazonaws.com/fargate-profile: my-fargate-profile. Der Pod muss mit einem Selektor in diesem Profil übereinstimmen, um in Fargate geplant zu werden. Die Affinitäts-/Anti-Affinitätsregeln von Kubernetes gelten nicht und sind bei Amazon-EKS-Fargate-Pods nicht erforderlich.

Wenn Sie ein Fargate-Profil erstellen, müssen Sie eine Pod-Ausführungsrolle angeben. Diese Ausführungsrolle ist für die Amazon-EKS-Komponenten vorgesehen, die auf der Fargate-Infrastruktur mit dem Profil ausgeführt werden. Es wird zur Autorisierung der Rollenbasierten Zugriffskontrolle (RBAC) von Kubernetes des Clusters hinzugefügt. Auf diese Weise kann sich kubelet, das in der Fargate-Infrastruktur ausgeführt wird, bei Ihrem Amazon-EKS-Cluster registrieren und als Knoten in Ihrem Cluster angezeigt werden. Die Pod-Ausführungsrolle bietet auch IAM-Berechtigungen für die Fargate-Infrastruktur, um Lesezugriff auf Amazon-ECR-Image-Repositorys zu ermöglichen. Weitere Informationen finden Sie unter IAM-Rolle für die Ausführung von Amazon-EKS-Pods.

Fargate-Profile können nicht geändert werden. Sie können jedoch ein neues aktuelles Profil erstellen, um ein vorhandenes Profil zu ersetzen, und dann das Original löschen.

Anmerkung

Alle Pods, die mit einem Fargate-Profil ausgeführt werden, werden angehalten und als ausstehend gekennzeichnet, wenn das Profil gelöscht wird.

Wenn Fargate-Profile in einem Cluster den Status DELETING haben, müssen Sie warten, bis dieses Fargate-Profil gelöscht wurde, bevor Sie andere Profile in diesem Cluster erstellen können.

Anmerkung

Fargate unterstützt derzeit keine Kubernetes topologySpreadConstraints.

Amazon EKS und Fargate verteilen Pods auf alle Subnetze, die im Fargate-Profil definiert sind. Es kann jedoch zu einer ungleichmäßigen Verteilung kommen. Wenn Sie eine gleichmäßige Verteilung benötigen, verwenden Sie zwei Fargate-Profile. Eine gleichmäßige Verteilung ist in Szenarien wichtig, in denen Sie zwei Replikate bereitstellen möchten und keine Ausfallzeiten wünschen. Wir empfehlen, dass jedes Profil nur ein Subnetz hat.

Fargate-Profilkomponenten

Die folgenden Komponenten sind in einem Fargate-Profil enthalten.

Pod-Ausführungsrolle

Wenn Ihr Cluster Pods auf AWS Fargate erstellt, muss das auf der Fargate-Infrastruktur ausgeführte kubelet in Ihrem Namen AWS-API-Aufrufe durchführen. Beispielsweise muss er Aufrufe tätigen, um Container-Images aus Amazon ECR zu ziehen. Die Amazon-EKS-Pod-Ausführungsrolle stellt die entsprechenden IAM-Berechtigungen bereit.

Wenn Sie ein Fargate-Profil erstellen, müssen Sie eine Pod-Ausführungsrolle angeben, die mit Ihren Pods verwendet werden soll. Diese Rolle wird zur Autorisierung der Rollenbasierten Zugriffskontrolle (RBAC) von Kubernetes des Clusters hinzugefügt. Auf diese Weise kann sich kubelet, das in der Fargate-Infrastruktur ausgeführt wird, bei Ihrem Amazon-EKS-Cluster registrieren und als Knoten in Ihrem Cluster angezeigt werden. Weitere Informationen finden Sie unter IAM-Rolle für die Ausführung von Amazon-EKS-Pods.

Subnets

Die IDs von Subnetzen, in denen Pods gestartet werden, die dieses Profil verwenden. Derzeit werden Pods, die in Fargate ausgeführt werden, keine öffentlichen IP-Adressen zugewiesen. Daher werden für diesen Parameter nur private Subnetze ohne direkte Route zu einem Internet-Gateway akzeptiert.

Selektoren

Die Selektoren, mit denen Pods, die dieses Fargate-Profil verwenden, übereinstimmen sollen. Sie können bis zu fünf Selektoren in einem Fargate-Profil angeben. Die Selektoren bestehen aus folgenden Komponenten:

  • Namespace – Sie müssen einen Namespace für einen Selektor angeben. Der Selektor stimmt nur mit Pods überein, die in diesem Namespace erstellt werden. Sie können jedoch mehrere Selektoren erstellen, um mehrere Namespaces zu adressieren.

  • Bezeichnungen – Sie können optional Kubernetes-Bezeichnungen angeben, mit denen der Selektor übereinstimmen muss. Der Selektor stimmt nur mit Pods überein, die alle im Selektor angegebenen Labels aufweisen.

Platzhalter für Fargate-Profile

Zusätzlich zu den Zeichen, die von Kubernetes erlaubt sind, dürfen Sie * und ? in den Selektorkriterien für Namespaces, Label-Schlüssel und Label-Werte verwenden:

  • * steht für kein, ein oder mehrere Zeichen. Zum Beispiel kann prod* prod und prod-metrics darstellen.

  • ? steht für ein einzelnes Zeichen (z. B. kann value? valuea darstellen). Es kann jedoch nicht value und value-a darstellen, weil ? nur genau ein Zeichen darstellen kann.

Diese Platzhalterzeichen können an jeder Position und in Kombination verwendet werden (z. B. prod*, *dev und frontend*?). Andere Platzhalter und Formen des Mustervergleichs, wie reguläre Ausdrücke, werden nicht unterstützt.

Wenn mehrere übereinstimmende Profile für den Namespace und die Labels in der Pod-Spezifikation vorhanden sind, übernimmt Fargate das Profil basierend auf einer alphanumerischen Sortierung nach Profilnamen. Wenn zum Beispiel Profil A (mit dem Namen beta-workload) und Profil B (mit dem Namen prod-workload) passende Selektoren für die zu startenden Pods haben, wählt Fargate Profil A (beta-workload) für die Pods aus. Die Pods haben Labels mit Profil A auf den Pods (z. B. eks.amazonaws.com/fargate-profile=beta-workload).

Wenn Sie vorhandene Fargate-Pods auf neue Profile migrieren möchten, die Platzhalter verwenden, gibt es zwei Möglichkeiten, dies zu tun:

  • Erstellen Sie ein neues Profil mit passenden Selektoren und löschen Sie dann die alten Profile. Mit alten Profilen gekennzeichnete Pods werden in neue übereinstimmende Profile verschoben.

  • Wenn Sie Workloads migrieren möchten, sich aber nicht sicher sind, welche Fargate-Labels sich auf jedem Fargate-Pod befinden, können Sie die folgende Methode verwenden. Erstellen Sie ein neues Profil mit einem Namen, das zuerst alphanumerisch unter den Profilen auf demselben Cluster sortiert. Recyceln Sie dann die Fargate-Pods, die in neue Profile migriert werden müssen.

Erstellen eines Fargate-Profils

In diesem Abschnitt wird beschrieben, wie Sie ein Fargate-Profil erstellen. Sie müssen auch eine Pod-Ausführungsrolle erstellt haben, die für Ihr Fargate-Profil verwendet werden soll. Weitere Informationen finden Sie unter IAM-Rolle für die Ausführung von Amazon-EKS-Pods. Pods, die in Fargate ausgeführt werden, werden nur in privaten Subnetzen unterstützt (mit NAT Gateway-Zugriff auf AWS-Services, aber ohne direkte Route zu einem Internet-Gateway. Dies ist so, da in der VPC Ihres Clusters private Subnetze verfügbar sein müssen.

Sie können ein Profil mit Folgendem erstellen:

eksctl

So erstellen Sie ein Fargate-Profil mit eksctl

Erstellen Sie Ihr Fargate-Profil mit dem folgenden eksctl-Befehl und ersetzen Sie dabei alle Beispielwerte durch Ihre eigenen Werte. Sie müssen einen Namespace angeben. Die Option --labels ist jedoch nicht erforderlich.

eksctl create fargateprofile \ --cluster my-cluster \ --name my-fargate-profile \ --namespace my-kubernetes-namespace \ --labels key=value

Sie können bestimmte Platzhalter für my-kubernetes-namespace- und key=value-Labels verwenden. Weitere Informationen finden Sie unter Platzhalter für Fargate-Profile .

AWS-Managementkonsole

So erstellen Sie ein Fargate-Profil mit AWS-Managementkonsole

  1. Öffnen Sie die Amazon-EKS-Konsole.

  2. Wählen Sie den Cluster aus, für den Sie ein Fargate-Profil erstellen möchten.

  3. Wählen Sie die Registerkarte Compute (Datenverarbeitung) aus.

  4. Wählen Sie unter Fargate-Profile die Option Fargate-Profil hinzufügen aus.

  5. Auf der Seite Konfigurieren des Fargate Profils führen Sie folgende Schritte aus:

    1. Geben Sie unter Name einen eindeutigen Namen für Ihr Fargate-Profil ein, wie z. B. my-profile.

    2. Wählen Sie für Pod-Ausführungsrolle die Pod-Ausführungsrolle aus, die mit Ihrem Fargate-Profil verwendet werden soll. Es werden nur IAM-Rollen mit dem eks-fargate-pods.amazonaws.com.rproxy.govskope.ca-Service-Prinzipal angezeigt. Wenn keine Rollen aufgelistet sind, müssen Sie eine erstellen. Weitere Informationen finden Sie unter IAM-Rolle für die Ausführung von Amazon-EKS-Pods.

    3. Ändern Sie die ausgewählten Subnetze nach Bedarf.

      Anmerkung

      Für Pods, die in Fargate ausgeführt werden, werden nur private Subnetze unterstützt.

    4. Für Tags können Sie Ihr Fargate-Profil wahlweise markieren. Diese Tags werden nicht an andere Ressourcen weitergegeben, die dem Profil zugeordnet sind, z. B. Pods.

    5. Wählen Sie Weiter aus.

  6. Führen Sie auf der Seite Pod-Auswahl konfigurieren die folgenden Schritte aus:

    1. Geben Sie für Namespace einen Namespace ein, der mit Pods übereinstimmt.

      • Sie können bestimmte Namespaces für den Abgleich verwenden, z. B. kube-system oder default.

      • Sie können bestimmte Platzhalter verwenden (z. B. prod-*), um mehrere Namespaces abzugleichen (z. B. prod-deployment und prod-test). Weitere Informationen finden Sie unter Platzhalter für Fargate-Profile .

    2. (Optional) Fügen Sie dem Selektor Kubernetes-Markierungen hinzu. Fügen Sie sie insbesondere demjenigen hinzu, dem die Pods im angegebenen Namespace entsprechen müssen.

      • Sie können dem Selektor das Label infrastructure: fargate hinzufügen, sodass nur Pods im angegebenen Namespace, die ebenfalls die infrastructure: fargate-Kubernetes-Bezeichnung tragen, mit dem Selektor übereinstimmen.

      • Sie können bestimmte Platzhalter verwenden (z. B. key?: value?), um mehrere Namespaces abzugleichen (z. B. keya: valuea und keyb: valueb). Weitere Informationen finden Sie unter Platzhalter für Fargate-Profile .

    3. Wählen Sie Weiter aus.

  7. Überprüfen Sie auf der Seite Überprüfen und erstellen die Informationen für Ihr -Profil und wählen Sie Erstellen aus.