Amazon Elastic Kubernetes Service (Amazon EKS)
Amazon Elastic Kubernetes Service (EKS) ist ein Cloud-basierter Container-Verwaltungsdienst, der nativ mit Kubernetes integriert ist, damit Nutzer Anwendungen direkt in der Cloud bereitstellen können.
Der EKS-Service verwaltet und skaliert automatisch Cluster von Infrastrukturressourcen auf AWS für Kubernetes. Mit Amazon EKS nutzen Unternehmen Kubernetes, ohne die Containerorchestrierungssoftware installieren, betreiben oder verwalten zu müssen.
Wie funktioniert Amazon EKS?
Amazon EKS arbeitet mit der bekannten Kubernetes-Plattform, einschließlich einer Steuerungsebene und Worker Nodes.
Die Steuerebene verwendet drei Master-Knoten mit Lastausgleich, die in einer Hochverfügbarkeitskonfiguration (HA) angeordnet sind. AWS verwaltet die Knoten und verwaltet die Infrastruktur, die für Kubernetes die Voraussetzung ist, einschließlich des Zugriffs auf die EKS-API.
EKS-Benutzer erstellen Worker Nodes innerhalb von Amazon EC2-Instanzen. Sie sind für das Hosten von Container-Pods verantwortlich, die containerbasierte Anwendungen bilden. Nodes sind in der Regel in Gruppen organisiert, von denen sich mehrere zusammen innerhalb eines Clusters befinden können.
Cluster von Worker-Knoten kommunizieren mit der Kontrollebene über die EKS-API, rollenbasierte Zugriffskontrolle (RBAC) und Amazon VPC. Dadurch wird der Datenverkehr eingeschränkt und die Sicherheit zwischen der Kontrollebene und den von Benutzern betriebenen Clustern aufrechterhalten.
Amazon EKS eignet sich für eine Reihe von Szenarien. Sie können ein Cluster pro Anwendung nutzen, oder mehrere Anwendungen teilen sich ein Cluster. Letzteres erfordert IAM (Identity and Access Management) und Kubernetes-Namespaces, um Anwendungen innerhalb des Clusters zu isolieren.
Amazon EKS Komponenten und Funktionen
Ein Entwickler oder Administrator, der EKS verwendet, stellt die Worker-Knoten bereit und verbindet sie mit Amazon EKS-Endpunkten. AWS übernimmt dann alle Verwaltungsaufgaben für die Kubernetes-Kontrollebene, einschließlich Upgrades, Patches und Sicherheitskonfigurationen. AWS skaliert API-Server und persistente Backend-Ebenen über EKS. Der Service ist mit mehreren nativen Amazon-Services integriert, wie Elastic Load Balancing, AWS IAM, Amazon Virtual Private Cloud (VPC), AWS PrivateLink und AWS CloudTrail.
Ein Benutzer muss eine IAM-Rolle, VPC und Sicherheitsgruppe für seine Cluster erstellen. Ein einzelnes Cluster kann mehrere Anwendungen ausführen. Für eine bessere Netzwerkisolierung sollten Sie für jeden Cluster unterschiedliche VPCs verwenden.
Kubernetes nutzt Pods oder Gruppen von Containern, um Server zu orchestrieren und zu skalieren. Amazon EKS repliziert automatisch Master-Scheduler über drei Verfügbarkeitszonen in jeder AWS-Region, um die Verfügbarkeit zu erhöhen. Es scannt auch nach ungesunden Knoten und ersetzt sie automatisch.
Amazon EKS stützt sich auf viele Open-Source-Tools, darunter Kubernetes und Docker. Das bedeutet, dass ein Benutzer Pods ohne Änderungen am Anwendungscode in Umgebungen außerhalb von AWS verschieben kann.
Amazon EKS bietet eine breite Palette von Funktionen, die sich auf mehrere wichtige Betriebsbereiche konzentrieren, darunter die folgenden:
- Cluster-Verwaltung. EKS bietet eine verwaltete Steuerungsebene, verwaltete Knotengruppen, eine gehostete Kubernetes-Konsole, umfangreiche AWS-Service-Integrationen und Unterstützung für eine große Bibliothek von Kubernetes-Add-ons.
- Netzwerkverwaltung. EKS verwaltet das Netzwerk und die Sicherheit durch die Unterstützung von IPv6, Service Discovery, IAM-Authentifizierung und gewährleistet das Einhalten einer Reihe von regulatorischen Anforderungen (wie SOC, PCI, IRAP, HITRUST und andere).
- Load Balancing. EKS stellt Load Balancing bereit durch den Application Load Balancer, Network Load Balancer und Classic Load Balancer.
- Serverless Computing. EKS ermöglicht Serverless Computing durch AWS Fargate.
- Protokollierung. EKS nutzt AWS CloudTrail und Amazon CloudWatch für das Protokollieren und die Analyse der EKS-Umgebung.
- Aktualisieren. EKS unterstützt einfache Updates. Das gewährleistet schnelle Updates auf die neueste Kubernetes-Version ohne signifikante Unterbrechung der bestehenden Cluster oder Anwendungen. Benutzer können die gewünschte Kubernetes-Version über das SDK, CLI oder die AWS-Konsole auswählen.
- Eksctl. Das Tool eksctl vereinfacht die Erstellung und Kontrolle von EKS-Clustern.
EKS versus ECS und die Konkurrenz
Amazon EKS ist ein Ableger des Amazon EC2 Container Service (ECS), der einer der ersten verwalteten Containerdienste war. Amazon ECS verfügt über eine eigene Orchestrierungsschicht, die im Vergleich zu EKS die Integration mit anderen AWS-Angeboten erleichtert. Es ist jedoch schwieriger, containerisierte Anwendungen aus der Amazon-Cloud zu verschieben.
Amazon EKS bietet Fargate-Unterstützung und verlagert die Verwaltung der zugrunde liegenden EC2-Instanzen vollständig zu AWS. Infolgedessen muss sich ein Entwickler nur um die Container selbst kümmern. Er muss keine Server bereitstellen, skalieren oder patchen. EKS läuft auch auf AWS Outposts, wobei die resultierenden Cluster in der AWS-Cloud bereitgestellt werden (und nicht in lokalen Outposts-Systemen).
Amazon EKS gesellt sich zu mehreren anderen Kubernetes-basierten Container-Services, die bereits auf dem Markt sind, darunter Microsoft Azure Kubernetes Service, Google Kubernetes Engine, RedHat OpenShift, VMware Tanzu und Docker Enterprise Edition. Plugins, Skripte und Clusterkonfigurationen lassen sich zwischen diesen Plattformen austauschen, da sie alle auf derselben Orchestrierungsschicht basieren.
EKS arbeitet mit G3-, G4-, inf- und P-Instance-Familien, die x86-beschleunigte, für Amazon EKS optimierte AMIs unterstützen sollen. Die traditionelleren Familien A, C, HPC, M und T sind für x86- und Arm-AMIs vorgesehen.
Erste Schritte mit Amazon EKS
Die Verwaltung von Containern kann eine komplexe und zeitaufwändige Aufgabe sein, doch es gibt einige Best Practices, die Ihnen dabei helfen, die Sicherheit und Ausfallsicherheit von EKS-Clustern zu verbessern. Einige Beispiele sind die folgenden:
- Aktivieren Sie das Cluster Logging. Stellen Sie sicher, dass die Clusterprotokollierung für alle EKS-Cluster aktiviert ist. Dies hilft Entwicklern und Administratoren, Probleme zu beheben und das Verhalten zu verbessern.
- Beschränken Sie den eingehenden Datenverkehr. Verwenden Sie EKS-Sicherheitsgruppen, um eingehenden Datenverkehr auf bestimmte Ports zu beschränken (zum Beispiel TCP Port 443).
- Deaktivieren Sie den öffentlichen Zugang. Konfigurieren Sie den AWS EKS-Cluster-Endpunkt-Zugang so, dass der öffentliche Zugang verhindert wird. Dadurch wird das Potenzial für böswillige Aktivitäten mit EKS-Clustern reduziert.
- Richten Sie Worker Nodes auf Zuverlässigkeit aus. Verwenden Sie verwaltete Knoten als Teil einer von EKS verwalteten Auto Scaling Group, die sich über mehrere Verfügbarkeitszonen erstreckt, um sicherzustellen, dass der Ausfall eines Knotens eine Anwendung nicht vollständig lahmlegt.
- Erwägen Sie Ihre Optionen. Prüfen Sie, ob Karpenter anstelle von Amazon EC2 Auto Scaling Gruppen oder dem Kubernetes Cluster Autoscaler nutzen sollten, um die Cluster-Rechenkapazität dynamisch anzupassen.