Azure Kubernetes Service (AKS)
Azure Kubernetes Service ist ein verwalteter Containerorchestrierungsdienst, der auf dem Open-Source-System Kubernetes basiert und in der öffentlichen Microsoft Azure-Cloud verfügbar ist. AKS dient dazu, wichtige Funktionen wie das Bereitstellen, Skalieren und Verwalten von Docker-Containern und Container-basierten Anwendungen zu übernehmen.
AKS ist seit Juni 2018 verfügbar und wird am häufigsten von Softwareentwicklern und IT-Administratoren genutzt.
Kubernetes der De-Facto-Standard unter den Open-Source-Plattformen für die Containerorchestrierung, erfordert aber in der Regel einen großen Overhead bei der Cluster-Verwaltung. AKS übernimmt einen Großteil dieses Aufwands und reduziert die Komplexität von Bereitstellungs- und Verwaltungsaufgaben. AKS wurde für Unternehmen entwickelt, die skalierbare Anwendungen mit Docker und Kubernetes erstellen und dabei die Azure-Architektur nutzen möchten.
Nutzer erstellen ein AKS-Cluster über die Azure-Befehlszeilenschnittstelle (CLI), ein Azure-Portal oder Azure PowerShell. Außerdem lassen sich Vorlagen mit Azure Resource Manager-Vorlagen einrichten und für die automatisierte Bereitstellung nutzen.
AKS-Funktionen und Vorteile
Die Hauptvorteile von AKS sind Flexibilität, Automatisierung und reduzierter Verwaltungsaufwand für Administratoren und Entwickler. So konfiguriert AKS beispielsweise automatisch alle Kubernetes-Knoten, die wiederum die Arbeitsknoten während des Bereitstellungsprozesses steuern und verwalten, und übernimmt eine Reihe weiterer Aufgaben, darunter die Anbindung an Azure Active Directory (AD), Überwachungsaufgaben und die Konfiguration erweiterter Netzwerkfunktionen wie HTTP Application Routing. Benutzer überwachen ein Cluster direkt oder lassen sich alle Cluster mit Azure Monitor anzeigen.
Da AKS ein verwalteter Dienst ist, kümmert sich Microsoft um alle Kubernetes-Upgrades für den Dienst, sobald neue Versionen verfügbar sind. Benutzer können jedoch entscheiden, ob und wann sie die Kubernetes-Version in ihrem eigenen AKS-Cluster aktualisieren, um Fehler durch inkompatible Workloads zu vermeiden.
Es ist möglich, AKS-Knoten nach oben oder unten zu skalieren, um Schwankungen im Ressourcenbedarf auszugleichen. Für zusätzliche Rechenleistung unterstützt AKS auch Knotenpools, die durch Grafikprozessoren (GPUs) beschleunigt werden. Dies kann für rechenintensive Workloads, wie zum Beispiel wissenschaftliche Anwendungen, von entscheidender Bedeutung sein.
Benutzer greifen auf AKS über ein AKS-Verwaltungsportal, eine AKS-CLI oder durch die Vorlagen in Tools wie Azure Resource Manager zu. Der Dienst ist auch mit der Azure Container Registry (ACR) für das Speichern von Docker-Images kompatibel und unterstützt persistente Daten mit Azure Disks. Über das Azure-Portal können Benutzer auch auf Kubernetes-Ressourcen in AKS zugreifen.
AKS ist mit Azure AD integriert, um eine rollenbasierte Zugriffskontrolle (Role Based Access Control, RBAC) für die Sicherheit und Überwachung der Kubernetes-Architektur bereitzustellen.
Mit AKS erstellen Benutzer außerdem benutzerdefinierte Tags für AKS-Ressourcen und ändern, die von Endbenutzern erstellt wurden.
AKS Anwendungsfälle
AKS ist in der Regel auf die Bereitstellung und Verwaltung von containerbasierten Anwendungen beschränkt, aber es gibt zahlreiche Anwendungsfälle für den Dienst innerhalb dieses Bereichs.
Beispielsweise könnte ein Unternehmen AKS nutzen, um die Migration von Anwendungen in Container zu automatisieren und zu rationalisieren. Zunächst verschieben sie die Anwendung in einen Container, registrieren dann den Container bei ACR und starten dann mit AKS die Anwendung in einer vorkonfigurierten Umgebung. In ähnlicher Weise stellt AKS verschiedene Gruppen von Containern bereit, skaliert und verwaltet sie, was beim Start und Betrieb von Microservices-basierten Anwendungen hilfreich ist.
AKS hilft beim Umsetzen agiler Softwareentwicklungsparadigmen wie kontinuierliche Integration/kontinuierliche Bereitstellung und DevOps. Ein Entwickler könnte beispielsweise einen neuen Container-Build in ein Repository wie GitHub stellen, diese Builds in ACR verschieben und sich dann auf AKS verlassen, um den Workload in operative Container zu starten.
Das Datenstreaming lässt sich ebenfalls mit AKS vereinfachen. Das Tool dient der Verarbeitung von Echtzeit-Datenströmen, um eine schnelle Analyse durchzuführen.
Andere Einsatzmöglichkeiten für AKS gehören in den Bereich Internet der Dinge (Internet of Things, IoT). Der Dienst hilft beispielsweise dabei, angemessene Rechenressourcen für die Verarbeitung von Daten aus Tausenden oder sogar Millionen von einzelnen IoT-Geräten sicherzustellen. In ähnlicher Weise trägt AKS dazu bei, angemessene Rechenleistung für Big-Data-Aufgaben zur Verfügung zu stellen, zum Beispiel für die Modellschulung in Umgebungen für maschinelles Lernen.
Die Architektur von AKS
Wenn Benutzer ein AKS-Cluster erstellt, wird automatisch eine Steuerungsebene erstellt und konfiguriert. Die Steuerebene ist eine verwaltete Azure-Ressource, auf die der Benutzer nicht direkt zugreifen kann. Sie enthält Ressourcen, die:
- Interaktionsmöglichkeiten für Management-Tools bieten;
- den Status und die Konfiguration des Kubernetes-Clusters aufrechterhalten;
- planen und festlegen, welche Knoten den Workload ausführen, und
- kleinere Aktionen überwachen, wie zum Beispiel die Replikation von Kubernetes-Pods oder die Handhabung von Knotenoperationen.
Der Benutzer legt die Größe und Anzahl der Knoten fest, und die Azure-Plattform konfiguriert eine sichere Kommunikation zwischen den Knoten und der Steuerungsebene.
Ein AKS-Cluster besteht aus mindestens einem Knoten. Zentrale Recheneinheit und Speicher sind die Knotenressourcen, die dazu dienen, dass der Knoten als Teil eines Clusters funktioniert. Knoten mit ähnlichen Konfigurationen werden in Knotenpools zusammengefasst.
AKS-Bereitstellungen umfassen zwei Ressourcengruppen. Eine Gruppe ist nur die Kubernetes-Dienstressource, die andere ist die Knotenressourcengruppe. Die Knotenressourcengruppe enthält alle mit dem Cluster verbundenen Infrastrukturressourcen. Für das Erstellen und Verwalten anderer Azure-Ressourcen ist ein Dienstprinzipal oder eine verwaltete Identität erforderlich.
AKS Sicherheit, Überwachung und Compliance
AKS unterstützt RBAC über Azure Active Directory, wodurch ein Administrator den Kubernetes-Zugriff an AD-Identitäts- und Gruppenzuordnungen anpassen kann. Administratoren überwachen den Zustand von Containern anhand der Prozessor- und Speichermetriken, die von Containern, Kubernetes-Knoten und anderen Punkten in der Infrastruktur gesammelt werden. Containerprotokolle werden ebenfalls gesammelt und gespeichert, um detailliertere Analysen und Fehlerbehebungen durchzuführen. Wenn ein AKS-Cluster erstellt oder skaliert wird, werden die Knoten automatisch mit den neuesten Sicherheitsupdates bereitgestellt. Azure wendet auch automatisch Sicherheitspatches für Betriebssysteme (OS) auf Linux-basierte Knoten an; auf Windows Server-Knoten werden jedoch nicht automatisch die neuesten Updates angewendet.
AKS-Verfügbarkeit und Kosten
AKS ist ein kostenloser Azure-Dienst, so dass für die Verwaltung von Kubernetes-Clustern keine Kosten anfallen. AKS-Nutzern müssen jedoch für die zugrundeliegenden Rechen-, Speicher-, Netzwerk- und anderen Cloud-Ressourcen bezahlen, die von den Containern belegt werden.
AKS ist derzeit in zahlreichen Regionen verfügbar, darunter Ost-, Mittel- und West-USA, Mittelkanada, Nord- und Westeuropa sowie Südostasien. Weitere Regionen werden im Laufe der Zeit hinzukommen.
Kubernetes versus Docker
Die Docker-Technologie wird zum Erstellen und Ausführen von Containern verwendet. Docker besteht aus dem Client-CLI-Tool und der Containerlaufzeitumgebung. Das CLI-Tool sendet Anweisungen an die Docker-Laufzeitumgebung, während die Docker-Laufzeitumgebung Container erstellt und sie auf dem Betriebssystem ausführt. Docker verwaltet außerdem Container-Images.
Im Vergleich dazu ist Kubernetes eine Containerorchestrierungstechnologie. Kubernetes gruppiert die Container, die eine einzelne Anwendung oder einen Microservice unterstützen, in einem Pod. Früher war Docker die Standard-Containerlaufzeitumgebung, die von Kubernetes verwendet wurde; inzwischen unterstützt es aber Docker nicht mehr.
Der wichtige Unterschied zwischen Docker und Kubernetes ist, dass Docker eine Technologie zur Definition und Ausführung von Containern ist, während Kubernetes ein Container-Orchestrierungs-Framework ist, das Container darstellt und verwaltet. Kubernetes stellt selbst keine Container bereit.
Was sind die Unterschiede zwischen AKS und Service Fabric?
Azure Service Fabric ist ein Platform-as-a-Service-Angebot, das das Entwickeln, Bereitstellen und Verwalten von Anwendungen für die Azure-Cloud-Plattform erleichtern soll.
Anwendungen, die in der Service Fabric-Umgebung erstellt werden, bestehen aus separaten Microservices, die über Service-APIs miteinander kommunizieren.
Service Fabric eignet sich gut für Anwendungen, die mit Windows Server-Containern oder ASP.NET Internet Information Services-Anwendungen erstellt wurden. Service Fabric bietet einen Weg zu skalierbaren, Cloud-basierten Setups im Kontext traditionellerer Programmiermethoden. IT-Teams übertragen damit häufig bestehende Windows-basierte Anwendungen auf Azure, ohne dass sie diese komplett refaktorisieren müssen.
Der größte Unterschied zwischen AKS und Service Fabric ist, dass Service Fabric auf Microservices ausgerichtet ist und eine Reihe von verschiedenen Laufzeitstrategien unterstützt. So kann Service Fabric beispielsweise sowohl Docker- als auch Windows Server-Container bereitstellen.
Sowohl Service Fabric als auch AKS bieten Integrationen mit anderen Azure-Diensten, aber Service Fabric lässt sich enger an andere Microsoft-Produkte und -Dienste anbinden, da es vollständig von Microsoft entwickelt wurde.
Sofern die zu entwickelnde Anwendung nicht stark auf den Microsoft-Technologie-Stack angewiesen ist, ist ein Cloud-agnostischer Orchestrierungsdienst wie Kubernetes für die meisten containerisierten Anwendungen besser geeignet.
AKS versus ACS
Vor der Veröffentlichung von AKS bot Microsoft den Azure Container Service (ACS) an, der zahlreiche Open-Source-Container-Orchestrierungsplattformen, darunter Docker Swarm und Mesosphere Data Center Operating System, sowie Kubernetes unterstützte. Bei AKS liegt der Fokus ausschließlich auf der Nutzung von Kubernetes.
Es gibt zwischen ACS und AKS zahlreiche Unterschiede, die ein Benutzer vor der Migration beachten muss. So verwendet AKS beispielsweise verwaltete Festplatten, sodass Sie nicht-verwaltete Festplatten in verwaltete Festplatten konvertieren müssen, bevor Sie sie AKS-Knoten zuweisen. Ebenso müssen Sie alle persistenten Speicher-Volumes oder benutzerdefinierten Speicherklassenobjekte, die mit Azure-Festplatten verbunden sind, in verwaltete Festplatten konvertieren.
Darüber hinaus können zustandsbehaftete Anwendungen während einer Migration von ACS zu AKS von Ausfallzeiten und Datenverlusten betroffen sein, weshalb Entwickler und Anwendungseigentümer vor dem Wechsel eine Due-Diligence-Prüfung durchführen sollten.