Zum Inhalt springen Weiter zur Suche
Testversion
Glossar der Begriffe

Was ist Kubernetes (K8s) für containerisierte Anwendungen?

Nutzung von Kubernetes und Lastausgleich des Kubernetes-Anwendungsverkehrs, um den vollen Wert von Cloud-nativen Anwendungen zu erschließen

Kubernetes ist eine Kerntechnologie für die Containerisierung, bei der Anwendungen verpackt und isoliert werden, um eine bessere Skalierbarkeit und Portabilität zu ermöglichen. Kubernetes, auch als K8s bekannt, vereinfacht und automatisiert die Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen, die aus einer großen Anzahl von verteilten Containern bestehen können, so dass sie leichter über mehrere Standorte hinweg orchestriert werden können. multi-cloud und hybrid-cloud Umgebungen.

Ursprünglich als internes Projekt von Google entwickelt, ist Kubernetes heute ein Open-Source-Projekt, das von der Cloud Native Computing Foundation (CNCF) gehostet wird.

Da containerisierte Anwendungen zu einer tragenden Säule von DevOps, Continuous Integration/Continuous Delivery (CI/CD) und Cloud-native EntwicklungKubernetes hat sich durch effiziente Skalierbarkeit, mühelose Übertragbarkeit von Arbeitslasten und einfachere Möglichkeiten zur Verwaltung einer immer komplexeres Ökosystem von verteilten, dynamischen und ephemer Ressourcen.

Was sind containerisierte Anwendungen, und warum sind sie so beliebt?

Einfach ausgedrückt ist die Anwendungscontainerisierung eine hocheffiziente und portable Form der Anwendungsvirtualisierung. Anstatt für jede Anwendung eine komplette virtuelle Maschine mit Betriebssystem zu starten, können Unternehmen mehrere Container auf einem einzigen Host ausführen, die sich denselben Betriebssystemkern teilen.

Container arbeiten auf Bare-Metal-Systemen, Cloud-Instanzen und VMs mit einer Vielzahl von Betriebssystemen und nutzen Arbeitsspeicher, CPU und Speicher effizienter als herkömmliche virtualisierte oder physische Anwendungen. In Kombination mit ihrer geringeren Größe ermöglicht dies die Unterstützung einer größeren Anzahl von Anwendungscontainern in derselben Infrastruktur. Container können einfach reproduziert werden, wobei ihre Dateisysteme, Binärdateien und andere Informationen über den gesamten DevOps-Lebenszyklus hinweg gleich bleiben. Ein bestimmter Container kann auf jedem System, in jeder Cloud oder vor Ort, ausgeführt werden, ohne dass Code geändert oder betriebssystemspezifische Bibliotheksabhängigkeiten verwaltet werden müssen. Aufgrund dieser Eigenschaften eignet sich die Anwendungscontainerisierung ideal für die Geschwindigkeit, Flexibilität und Portabilität, die von digitalen Unternehmen gefordert werden.

Wofür wird Kubernetes eigentlich verwendet?

Um die Vorteile der Anwendungscontainerisierung nutzen zu können, müssen Unternehmen in der Lage sein, Anwendungen zunächst zu containerisieren und sie dann effektiv in ihrer Infrastruktur zu orchestrieren. Für Ersteres setzen sie auf eine Technologie zur Anwendungscontainerisierung wie Docker, containerd, CRI-O oder runC. Für letzteres wenden sie sich meist Kubernetes zu.

Als Container-Orchestrierungssystem gruppiert Kubernetes die Container, aus denen eine Anwendung besteht, in logische Einheiten, so dass sie in großem Maßstab leichter entdeckt und verwaltet werden können. Durch die Integration in die Container-Laufzeitumgebung über das Container Runtime Interface (CRI) ermöglicht K8s die Automatisierung der täglichen Verwaltung von containerisierten Anwendungen, die Abstraktion der zugehörigen Ressourcen und kontinuierliche Zustandsprüfungen zur Sicherstellung der Serviceverfügbarkeit. Auf diese Weise können Unternehmen Cloud-native, auf Microservices basierende Anwendungen schneller erstellen und verwalten, Anwendungen einfacher über mehrere Umgebungen hinweg bereitstellen und verschieben sowie Anwendungen effizienter skalieren.

Für DevOps-Teams bietet K8s eine gemeinsame Plattform für die Bereitstellung von Anwendungen in verschiedenen Cloud-Umgebungen und abstrahiert die Feinheiten der zugrundeliegenden Cloud-Infrastruktur, sodass sie sich voll und ganz auf die höherwertige Programmierung konzentrieren können. Unternehmen erhalten die Flexibilität, Anwendungen in der Cloud bereitzustellen, die den Anforderungen der Kunden am besten entspricht, und gleichzeitig die Kosten zu optimieren.

Lastausgleich für Kubernetes-Anwendungsverkehr für beste Ergebnisse

Genauso wie herkömmliche Anwendungen auf Anwendungs-Load-Balancer angewiesen sind, um Zuverlässigkeit, Verfügbarkeit und Leistung in einer Umgebung mit mehreren Servern zu gewährleisten, ist in einer Cloud-Umgebung ein Cloud-Load-Balancer erforderlich, um die Arbeitslasten über die Cloud-Ressourcen eines Unternehmens zu verteilen. Der Lastausgleich des Kubernetes-Anwendungsverkehrs ist wichtig, um den Benutzern ein optimales Erlebnis zu bieten. Die Grundvoraussetzung ist ähnlich: Anwendungs-Load-Balancer stellen sicher, dass kein einzelner Server zu stark belastet wird, ein Cloud-Load-Balancer gleicht den Netzwerkverkehr über die Clouds hinweg aus, und der Lastausgleich für Kubernetes-Anwendungen ermöglicht eine gleichmäßige Verteilung der Nachfrage auf die Kubernetes-Pods, aus denen ein Dienst besteht. Hierfür gibt es einige Optionen:

  • NodePort: Bei diesem einfachen Ansatz für kleine Cluster mit nur grundlegenden Routing-Regeln wird auf jedem Knoten ein Port zugewiesen (bekannt als NodePort), um den Benutzern den Zugriff auf die Anwendung unter der IP-Adresse und dem Port-Wert des Knotens zu ermöglichen.
  • LoadBalancer: LoadBalancer unterstützt mehrere Protokolle und Ports pro Dienst und kann als eine erweiterte Version von NodePort betrachtet werden. Hier wird auf jedem Knoten ein Port zugewiesen und mit einem externen Load Balancer verbunden. Diese Option erfordert eine Integration in die zugrunde liegende Infrastruktur des Cloud-Anbieters und wird in der Regel bei öffentlichen Cloud-Anbietern verwendet, die über eine solche Integration verfügen, was die anbieterübergreifende Portabilität erschweren kann. Darüber hinaus kann die standardmäßige Zuweisung einer externen IP-Adresse für jeden Dienst mit jeweils eigenem externen Load Balancer in der Cloud die Kosten schnell in die Höhe treiben.
  • Ingress Controller: K8s definiert einen Ingress Controller, mit dem HTTP- und HTTPS-Verkehr an die im Cluster laufenden Anwendungen weitergeleitet werden kann. Ein Ingress Controller kann zwar Pods für externen Datenverkehr freigeben und den Netzwerkverkehr gemäß Lastausgleichsalgorithmen auf Dienste verteilen, macht aber einen externen Load Balancer nicht vollständig überflüssig. Da jeder öffentliche Cloud-Anbieter über einen eigenen Ingress Controller verfügt, der mit seinem eigenen Load Balancer zusammenarbeitet, ist bei einer Multi-Provider-Cloud-Strategie ein externer Load Balancer erforderlich, um diese Umgebungen zu überbrücken und eine Cloud-unabhängige K8s-Umgebung bereitzustellen.

Wenn Unternehmen ihre Optionen für den Lastausgleich des Kubernetes-Anwendungsverkehrs in Betracht ziehen, sollten sie eine Lösung suchen, die sowohl für öffentliche als auch für private Clouds geeignet ist, eine dynamische Konfiguration des Verkehrsmanagements bei der Erstellung und Skalierung von Pods unterstützt und sich problemlos in vorhandene DevOps-Tools integrieren lässt. Wie bei herkömmlichen Anwendungs-Load-Balancern sollte die Lösung auch eine zentralisierte Sichtbarkeit und Analyse für eine proaktive Fehlerbehebung und eine schnelle Ursachenanalyse bieten.

Wie A10 Networks Kubernetes unterstützt

A10 Networks unterstützt Kubernetes durch eine Reihe von Lösungen. Der Thunder® Application Delivery Controller (ADC), der in einer breiten Palette von Formfaktoren (physisch, virtuell, Bare Metal, Container- und Cloud-Instanzen) erhältlich ist, optimiert die Bereitstellung und Sicherheit von Container-basierten Cloud-nativen Anwendungen und Diensten, die über öffentliche oder private Clouds laufen.

Mit Thunder Kubernetes Connector (TKC) bietet A10 Networks eine einfache und automatisierte Möglichkeit, die in einem Kubernetes-Cluster laufenden Dienste zu ermitteln und Thunder ADC zu konfigurieren, um den Datenverkehr für Kubernetes-Pods beim Starten, Stoppen oder Wechseln von Knoten auszugleichen. TKC läuft als Container innerhalb des Kubernetes-Clusters, funktioniert mit jedem Formfaktor von Thunder ADC und fügt sich nahtlos in den CI/CD-Release-Zyklus ein.

Externer Zugriff auf Kubernetes-Anwendungen in Multi/Hybrid-Cloud mit A10 TKC und Thunder ADC

Externer Zugriff auf Kubernetes-Anwendungen in Multi/Hybrid-Cloud mit A10 TKC und Thunder ADC

Das folgende Video zeigt, wie Thunder ADC zusammen mit Thunder Kubernetes Connector (TKC) den Zugriff auf Anwendungen ermöglicht, die in einem Kubernetes K8s-Cluster laufen.

< Zurück zu Glossar der Begriffe