Was ist AKS?
Azure Kubernetes Service (AKS) ist ein verwalteter Kubernetes-Dienst von Microsoft Azure, der die Bereitstellung und Verwaltung von Kubernetes-Clustern vereinfachen soll. Dazu verlagert AKS die operativen Aufgaben der Cluster-Verwaltung auf Azure, welches die Kubernetes-Steuerungsebene übernimmt und die Einrichtung der Worker-Knoten vereinfacht. Der AKS-Dienst selbst ist kostenlos und Sie zahlen nur für die Betriebszeit des Worker-Knotens.
Der Einsatz von AKS birgt viele Vorteile:
- Schnellere Anwendungsentwicklung: AKS kümmert sich um Patching, automatische Aktualisierung, Überwachung, Skalierung und Selbstreparatur. Dadurch werden Entwicklungsteams von operativen Aufgaben entlastet und können sich auf die Dienstentwicklung konzentrieren.
- Dynamische Ressourcennutzung: Als vollständig verwalteter Managed Service ermöglicht Ihnen AKS, Container-Dienste schnell bereitzustellen und auszuführen. Dabei kommt eine elastische Infrastruktur zum Einsatz, die bedarfsgemäß skaliert – ohne dass Sie eine Kubernetes-Komponente direkt verwalten müssen.
- Sicherheit und Compliance: AKS erfüllt mehrere Standards, darunter PCI-DSS und SOC.
Was ist Kubernetes?
Bei Kubernetes handelt es sich um ein Open‑Source-Orchestrierungssystem, das die Bereitstellung und Skalierung von Container-Workloads erleichtert. Trotz seiner Beliebtheit und weiten Verbreitung ist die manuelle Bereitstellung und Pflege eines Kubernetes-Clusters immer noch keine leichte Aufgabe. Der Azure Kubernetes Service (AKS) von Microsoft unterstützt Technikteams bei der Verwaltung von Kubernetes-Clustern. Mit AKS werden die operativen Aufgaben der Verwaltung von Kubernetes-Umgebungen vereinfacht.
Container eignen sich hervorragend, um Anwendungen zu bündeln und auszuführen. Ihre Ausführung in der Produktion bringt jedoch mehrere Herausforderungen mit sich, darunter:
- Umgang mit Failovers
- Horizontale Skalierung
- Diensterkennung
- Implementierung verschiedener Bereitstellungsmuster
- Container-Sicherheit
Kubernetes-Funktionen
Zu den wichtigsten Kubernetes-Funktionen gehören:
Diensterkennung
Von Kubernetes gehostete Workloads können automatisch erkannt und über DNS- oder IP-Adressen verfügbar gemacht werden. So können andere Workloads diese Dienste leichter finden und die Kommunikation initiieren.
Lastenausgleich
Mit Workloads, die als Services abstrahiert werden, kann Kubernetes grundlegende Lastenausgleichsfunktionen zwischen mehreren Replikaten der gleichen Workload anbieten.
Speicherorchestrierung
Kubernetes erleichtert das Mounten eines Speichersystems und stellt es Ihrem Container für persistente Daten zur Verfügung. Kubernetes lässt sich in den lokalen Speicher eines Knotens und in Remote-Volumes, die in der Cloud gehostet werden, integrieren.
Workload-Bereitstellung
Von Kubernetes gehostete Workloads werden deklarativ beschrieben. Und die Kubernetes-Engine kümmert sich um die eigentliche Bereitstellung, indem sie sicherstellt, dass alle erforderlichen Abhängigkeiten vorhanden sind. Durch Konzepte wie Bereitstellungen lassen sich Workloads einfach deklarieren – einschließlich ihrer Rollout- und Rollback-Strategien.
Lagerplatzverpackung
Mit Kubernetes können Sie die Anzahl der Ressourcen (Anfragen und Grenzwerte) angeben, die jedes Workload-Replikat verwenden kann. Dies ermöglicht eine bessere Nutzung von Rechenressourcen, vermeidet Ressourcenverschwendung und schützt davor, dass Workloads die Ressourcen anderer Workloads verbrauchen.
Selbstreparatur
Mithilfe von Live-, Bereitschafts- und Starttests stellt Kubernetes sicher, dass Dienste fehlerfrei und in der Lage sind, Datenverkehr zu empfangen, und startet sie bei Bedarf neu.
Konfigurationsverwaltung und Secrets
ConfigMaps und Secrets (geheime Schlüssel) erleichtern es Workloads, die erforderlichen Konfigurationsparameter, Verbindungsdetails und Anmeldedaten von zentralen, sicheren Standorten abzurufen. Dies trägt dazu bei, die Abhängigkeit von Drittanbieterkonfigurationen oder Secret-Managern zu verringern.
Kubernetes-Komponenten
Kubernetes besteht aus mehreren Komponenten, die zwischen einer Steuerungsebene und Worker-Knoten ausgeführt werden. Die Komponenten der Steuerungsebene übernehmen die Verwaltungsfunktionen eines Kubernetes-Clusters. Sie treffen Entscheidungen, die sich auf den Gesamtbetrieb des Clusters auswirken. Verschiedene Komponenten sind für unterschiedliche Aufgaben zuständig.
Komponente | Beschreibung |
---|---|
kube-apiserver | Die gesamte Kommunikation mit einem Kubernetes-Cluster erfolgt über den kube-apiserver. Diese Komponente macht das Kubernetes-API verfügbar und dient als dessen „Frontend“. Der kube-apiserver ist horizontal skalierbar konzipiert, um zunehmende Lasten bewältigen zu können. |
etcd | Die Kubernetes-Engine verwendet etcd. Dabei handelt es sich um einen Schlüsselwertspeicher für alle clusterbezogenen Informationen wie neue Ressourcen, Konfigurationen, Updates und vieles mehr. |
kube-scheduler | Diese Komponente ist für die Planung neuer Pods zuständig. Der kube-scheduler sucht nach Pods ohne zugewiesenen Knoten und entscheidet, wo sie geplant werden sollen. Er trifft komplexe Planungsentscheidungen und berücksichtigt dabei Faktoren wie Hardware-Anforderungen oder Affinitäts- und Antiaffinitätsbeschränkungen. |
kube-controller-manager | Der kube-controller-manager führt die Controller-Prozesse aus. Kubernetes-Cluster können über mehrere Controller verfügen (zum Beispiel über einen Knoten- oder einen Auftrags-Controller), und der kube-controller-manager stellt sicher, dass diese ordnungsgemäß ausgeführt werden. |
cloud-controller-manager | Der cloud-controller-manager führt Controller aus, die für verschiedene Cloud-Anbieter spezifisch sind. Dadurch lassen sich die Funktionen eines bestimmten Anbieters (zum Beispiel die Erstellung von Datenträger-Volumes) bei Bedarf leichter nutzen. Knotenkomponenten werden auf jedem Worker-Knoten ausgeführt und jeder Cluster muss über mindestens einen Worker-Knoten verfügen. Diese Komponenten stellen unter anderem sicher, dass Pods ausgeführt werden, oder übermitteln den Knotenstatus an den kube-apiserver. |
kubelet | kubelet läuft auf jedem Worker-Knoten und versichert sich, dass Container ausgeführt werden und fehlerfrei sind. Dazu werden Pod-Spezifikationen verwendet. |
kube-proxy | Dieser Kubernetes-Netzwerkproxy verwaltet Netzwerkregeln auf Knotenebene und trägt zur Implementierung der Service-Abstraktion bei. |
container runtime | Eine container runtime (also „Container-Laufzeit“) führt Container aus. Jeder Knoten benötigt eine Container-Laufzeit, und Kubernetes unterstützt mehrere Laufzeiten, zum Beispiel containerd oder CRI‑O. |
8 AKS-Funktionen
Zu den Funktionen von Azure Kubernetes Services (AKS) gehören:
1. Integration mit Azure AD
AKS bietet eine einfache Integration mit dem Dienst Azure Active Directory (Azure AD). Sie können bestehenden AD-Nutzern und -Gruppen durch integrierte Anmeldung Zugriff auf die Cluster-Umgebung gewähren und so die Nutzerverwaltung vereinfachen. Zudem können Sie den Cluster-Zugriff für diese bestehenden Identitäten sichern.
2. Integrierte Protokollierung und Überwachung
Bei der Ausführung von Workloads müssen deren Leistung und Kapazität überwacht werden, um unerwünschte Ausfälle zu vermeiden. Mit Azure Monitor können Sie Kennzahlen aus Containern, Knoten, Clustern und AKS-Komponentenprotokollen sammeln. Dank Azure können Sie diese Daten optimal in einem Arbeitsbereich für Protokollanalysen speichern. Es stellt sie zur Nutzung über das Azure‑Portal, das Azure‑CLI oder das Azure‑API bereit.
3. Skalierung von Cluster-Knoten und Pods
Kubernetes-Cluster müssen je nach Bedarf hoch- oder herabskaliert werden können. Das betrifft sowohl die Skalierung von Pods als auch von Knoten. Durch die Autoskalierung für AKS-Cluster lässt sich die Größe von Kubernetes-Clustern automatisch ändern, indem die Knotenanzahl an den Anwendungsdatenverkehr angepasst wird.
4. GPU-fähige Knoten
GPU-fähige Knoten eignen sich ideal für rechenintensive Aufgaben wie Grafikverarbeitung oder Machine Learning. AKS optimiert die Bereitstellung dieser Knotentypen und deren Anbindung an Kubernetes-Cluster nach Bedarf.
5. Upgrades von Cluster-Knoten
Die Versionen des Kubernetes-API ändern sich häufig. Unternehmen, die große Flotten von Kubernetes-Clustern betreiben, können somit schnell den Überblick darüber verlieren, welche Versionen sie für unterschiedliche Workloads in verschiedenen Umgebungen ausführen. AKS unterstützt die gleichzeitige Ausführung mehrerer Kubernetes-Versionen. Das lässt Ihnen Zeit, um deren Funktionalität vor dem Upgrade zu testen. Sobald Sie sich für ein Upgrade entscheiden, kümmert sich AKS um das Upgrade des Clusters und die Verlagerung von Workloads auf Knoten, auf denen die neue Version ausgeführt wird. Im Ergebnis werden Unterbrechungen minimiert.
6. Unterstützung für Speicher-Volumes
Die meisten Anwendungen – egal ob containerisiert oder nicht – müssen Informationen speichern. Einige Container-Anwendungen müssen möglicherweise auf das gleiche Speicher-Volume zugreifen, nachdem ihre Pods auf einem neuen Knoten geplant wurden. AKS ermöglicht Workloads die Bereitstellung statischer oder dynamischer Volumes für persistente Daten.
7. Unterstützung für Docker-Image und eigene private Container-Registry
AKS ist OCI-kompatibel und unterstützt das Docker-Image-Format. Da es Azure Container Registry (ACR) anbietet, das sich problemlos in AKS integrieren lässt, unterstützt Azure auch private Image-Registrys.
8. Virtuelle Azure-Netzwerke
AKS bietet zwei Netzwerkmodelle an: den Netzwerkbetrieb über Kubenet und über Azure Container Networking Interface (CNI). Sie können Ihre gewünschte Netzwerkkonfiguration definieren. AKS kümmert sich dann um die Implementierung.
Die Herausforderung selbstverwalteter Kubernetes-Cluster
Angesichts der Komplexität der oben aufgeführten Komponenten sind Aufwand und Fachwissen erforderlich, um einen Kubernetes-Cluster im großen Maßstab zu betreiben und zu verwalten. Abgesehen von den zugrunde liegenden Infrastrukturkomponenten (wie Server, Speicher und Netzwerkbetrieb) müssen alle zuvor beschriebenen Komponenten vorhanden sein, damit Kubernetes funktioniert. Sie müssen außerdem gesichert, gepflegt, skaliert und bei Bedarf aktualisiert werden.
Zum Betrieb eines maßgeschneiderten Kubernetes-Clusters kann es erforderlich sein, ein spezielles Technikteam für alle operativen Aufgaben einzusetzen. Dies ist ideal, wenn Ihr Kerngeschäft die Entwicklung von Tools für das Kubernetes-Netzwerk umfasst oder wenn Sie bestimmte Anforderungen haben, die Sie dazu zwingen, Ihre eigenen Cluster zu betreiben. In den meisten anderen Fällen ist es jedoch am besten, diese Cluster-Verwaltungsaufgaben auf einen dedizierten Dienst auszulagern. Und da kommt AKS ins Spiel.
AKS übernimmt nicht nur die meisten operativen Aspekte der Ausführung von Kubernetes-Clustern, sondern bietet auch einige Zusatzfunktionen. Dadurch wird der Service zu einer attraktiven Plattform für Unternehmen, die Container-Workloads ausführen.
So hilft CrowdStrike bei der AKS-Protokollierung
Kubernetes erleichtert die Ausführung von Container-Workloads. Es behebt Probleme wie die Diensterkennung und Selbstreparatur. Allerdings ist die Pflege eines Kubernetes-basierten Systems im großen Maßstab keine leichte Aufgabe. Der Azure Kubernetes Service kann viele dieser operativen Aufgaben abstrahieren – beispielsweise die Verwaltung von Steuerungsebenen und die dynamische Ressourcenzuweisung.
Protokolle von AKS-gehosteten Workloads sind beim Debugging von Anwendungen hilfreich und können zur Bedrohungserkennung eingesetzt werden. CrowdStrike Falcon® LogScale ist eine SaaS-Protokollierungsplattform, die unbegrenzte Protokoll-Volumes aus Ihrem AKS-Cluster und anderen Quellen speichern kann.
Wie hilft CrowdStrike bei der AKS-Protokollierung?
Es ermöglicht Ihrem Unternehmen, leistungsstarke Abfragen für Ihre Protokolle durchzuführen, Dashboards zu erstellen und Benachrichtigungen zu konfigurieren.