AWS Fargate - Amazon EKS

AWS Fargate

In diesem Thema wird die Verwendung von Amazon EKS zum Ausführen von Kubernetes pods auf AWS Fargate erläutert.

AWS Fargate ist eine Technologie, die bedarfsgerechte On-Demand-Rechenkapazität für Container bereitstellt. Mit AWS Fargate müssen Sie keine Gruppen virtueller Maschinen selbst bereitstellen, konfigurieren oder skalieren, um Container auszuführen. Sie müssen auch keine Servertypen auswählen, entscheiden, wann Sie Ihre Knotengruppen skalieren oder das Cluster-Packaging optimieren. Sie können steuern, welche pods auf Fargate starten und wie sie mit Fargate-Profilen ausgeführt werden. Fargate-Profile werden als Teil Ihres Amazon-EKS-Clusters definiert.

Amazon EKS wird in Kubernetes mit AWS Fargate integriert, indem Controller verwendet werden, die von AWS mithilfe des Upstream-Erweiterungsmodells von Kubernetes erstellt werden. Diese Controller werden als Teil der von Amazon EKS verwalteten Kubernetes-Steuerebene ausgeführt und sind für die Planung nativer Kubernetes-pods in Fargate verantwortlich. Die Fargate-Controller enthalten einen neuen Scheduler, der neben dem Standard-Kubernetes-Scheduler und zusätzlich zu mehreren mutierenden und validierenden Zugangscontrollern ausgeführt wird. Wenn Sie einen pod starten, der die Kriterien für die Ausführung in Fargate erfüllt, erkennen die Fargate-Controller, die im Cluster ausgeführt werden den pod, und aktualisieren und planen ihn in Fargate.

In diesem Thema werden die verschiedenen Komponenten von pods beschrieben, die auf Fargate ausgeführt werden, und auf besondere Überlegungen für die Verwendung von Fargate mit Amazon EKS hingewiesen.

Überlegungen zu AWS Fargate

Hier sind einige Dinge, die Sie bei der Verwendung von Fargate auf Amazon EKS beachten sollten.

  • AWS Fargate mit Amazon EKS ist in allen Amazon-EKS-Regionen außer AWS GovCloud (USA-Ost) und AWS GovCloud (USA-West) verfügbar.

  • Jeder pod, der auf Fargate ausgeführt wird, hat seine eigene Isolationsgrenze. Sie teilen sich den zugrunde liegenden Kernel, die CPU-Ressourcen, die Arbeitsspeicherressourcen oder die Elastic-Network-Schnittstelle nicht mit einem anderen pod.

  • Network Load Balancer und Application Load Balancer (ALBs) können mit Fargate nur mit IP-Zielen verwendet werden. Weitere Informationen finden Sie unter Erstellen eines Network Load Balancers und Application Load Balancing auf Amazon EKS.

  • Fargate-exponierte Dienste werden nur im IP-Modus des Zieltyps und nicht im Knoten-IP-Modus ausgeführt. Die empfohlene Möglichkeit, die Konnektivität von einem Dienst zu überprüfen, der auf einem verwalteten Knoten ausgeführt wird, und einem Dienst, der auf Fargate ausgeführt wird, besteht darin, eine Verbindung über den Dienstnamen herzustellen.

  • Pods müssen zu dem Zeitpunkt, zu dem sie auf Fargate ausgeführt werden sollen, mit einem Fargate-Profil übereinstimmen. Pods, die nicht mit einem Fargate-Profil übereinstimmen, können als Pending stecken bleiben. Wenn ein übereinstimmendes Fargate-Profil vorhanden ist, können Sie ausstehende pods, die Sie erstellt haben, löschen, um sie in Fargate neu zu planen.

  • Sie können Sicherheitsgruppen für pods nur mit pods verwenden, die auf Fargate laufen, die Teil des Clusters 1.18 oder höher sind.

  • Daemonsets werden von Fargate nicht unterstützt. Wenn Ihre Anwendung einen Daemon benötigt, konfigurieren Sie diesen Daemon neu, sodass er als Sidecar-Container in Ihren pods ausgeführt wird.

  • Privilegierte Container werden in Fargate nicht unterstützt.

  • Pods, die auf Fargate ausgeführt werden, können im HostPort-Manifest kein HostNetwork oder pod angeben.

  • Das standardmäßige weiche nofile- und nproc-Limit beträgt 1024 und das harte Limit 65535 für Fargate-pods.

  • GPUs sind derzeit auf Fargate nicht verfügbar.

  • Pods, die auf 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). Daher müssen für die VPC Ihres Clusters private Subnetze verfügbar sein. Weitere Informationen zu Clustern ohne ausgehenden Internetzugang finden Sie unter Anforderungen an private Cluster.

  • Sie können das Vertical Pod Autoscaler verwenden, um die CPU und den Speicher für Ihre Fargate-pods anfänglich richtig zu dimensionieren, und dann das Horizontal Pod Autoscaler verwenden, um diese pods zu skalieren. Wenn Sie möchten, dass der Vertical Pod Autoscaler pods mit größeren CPU- und Speicherkombinationen automatisch erneut in Fargate bereitstellt, stellen Sie den Modus für den Vertical Pod Autoscaler entweder auf Auto oder Recreate ein, um die korrekte Funktionalität sicherzustellen. Weitere Informationen finden Sie in der Vertical Pod Autoscaler-Dokumentation auf GitHub.

  • DNS-Auflösung und DNS-Hostnamen müssen für Ihre VPC aktiviert sein. Weitere Informationen finden Sie unter Anzeigen und Aktualisieren der DNS-Unterstützung für Ihre VPC.

  • Amazon-EKS-Fargate erweitert die Verteidigung für Kubernetes-Anwendungen, indem jeder Pod innerhalb einer virtuellen Maschine (VM) isoliert wird. Diese VM-Grenze verhindert den Zugriff auf hostbasierte Ressourcen, die von anderen Pods im Falle eines Container-Escapes verwendet werden. Dies ist eine übliche Methode, um containerisierte Anwendungen anzugreifen und Zugriff auf Ressourcen außerhalb des Containers zu erhalten.

    Die Verwendung von Amazon EKS ändert nichts an Ihren Verantwortlichkeiten im Rahmen des Modells der geteilten Verantwortung. Sie sollten die Konfiguration von Cluster-Sicherheits- und Governance-Kontrollen sorgfältig prüfen. Der sicherste Weg, eine Anwendung zu isolieren, besteht immer darin, sie in einem separaten Cluster auszuführen.

  • Fargate-Profile unterstützen die Angabe von Subnetzen aus sekundären VPC-CIDR-Blöcken. Möglicherweise möchten Sie einen sekundären CIDR-Block angeben. Dies liegt daran, dass in einem Subnetz nur eine begrenzte Anzahl von IP-Adressen verfügbar ist. Daher gibt es auch eine begrenzte Anzahl von pods, die im Cluster erstellt werden können. Durch die Verwendung verschiedener Subnetze für pods können Sie die Anzahl der verfügbaren IP-Adressen erhöhen. Weitere Informationen finden Sie unter Hinzufügen von IPv4-CIDR-Blöcken zu einer VPC.

  • Der Amazon-EC2-Instance-Metadatenservice (IMDS) ist für pods nicht verfügbar, die auf Fargate-Knoten bereitgestellt werden. Wenn Sie pods haben, die in Fargate bereitgestellt werden und die IAM-Anmeldeinformationen benötigen, weisen Sie sie Ihren pods mit IAM-Rollen für Servicekonten zu. Wenn Ihre pods Zugriff auf andere Informationen benötigen, die über das IMDS verfügbar sind, müssen Sie diese Informationen in Ihre pod-Spezifikation hart codieren. Dies umfasst die AWS-Region oder Availability Zone, in der ein pod bereitgestellt wird.

  • Sie können Fargate-pods nicht in den lokalen Zonen AWS Outposts, AWS Wavelength oder AWS bereitstellen.

  • Amazon EKS muss AWS Fargate-pods regelmäßig patchen, damit sie sicher bleiben. Wir versuchen, die Auswirkungen von Updates möglichst gering zu halten. Es kann jedoch vorkommen, dass pods gelöscht werden müssen, wenn sie nicht erfolgreich bereinigt wurden. Es gibt einige Maßnahmen, die Sie durchführen können, um Unterbrechungen zu minimieren. Weitere Informationen finden Sie unter Fargate-pod-Patching.