Mit der kürzlichen Hinzufügung des Kemp Ingress Controller für Kubernetes (verfügbar in LoadMaster) gibt es keinen besseren Zeitpunkt, um sich die Rolle von Kubernetes bei der Bereitstellung von Microservice-Anwendungen anzusehen. Kubernetes ist eine Open-Source-Plattform für die Verwaltung containerisierter Anwendungen in großem Maßstab. Kubernetes entstand aus einem internen Projekt zur Optimierung des Managements containerisierter Anwendungen innerhalb von Google und wurde schnell und weit verbreitet eingeführt. Es ist heute eines der am schnellsten wachsenden Open-Source-Projekte in der Geschichte. Der Name Kubernetes leitet sich vom griechischen Wort für Steuermann oder Lotse ab. Kubernetes bietet Orientierungsdienste, die Ihnen helfen, sich in der ständig wachsenden Verbreitung von Containern zurechtzufinden. Es wird "koo-ber-net-ees" ausgesprochen und in Gesprächen und Texten oft mit "k8s" oder "k-eights" abgekürzt.
Die Rolle, die Kubernetes spielt, und die Notwendigkeit dafür erfordern ein Verständnis von Containern in der Softwarebereitstellung. Container sind aus der Ära der Virtualisierungsbereitstellung des Infrastrukturmanagements hervorgegangen, die wiederum auf dem aufgebaut ist, was allgemein als traditionelles Serverbereitstellungsmodell bekannt ist. Das folgende Diagramm zeigt den Weg von der herkömmlichen Bereitstellung zur virtualisierten Bereitstellung und weiter zur Containerisierung.
Die meisten Menschen sind mit dem Virtualisierungsmodell vertraut, bei dem ein Hypervisor die Abstraktion virtueller Maschinen (VMs) von der zugrunde liegenden Hardware ermöglicht. Jeder virtuelle Computer verfügt weiterhin über eine separate Kopie eines Betriebssystems und andere Abhängigkeiten innerhalb des virtuellen Computers, unabhängig von allen anderen VMs.
Die Containerisierung geht auf der Abstraktionsebene noch einen Schritt weiter. Container ähneln VMs, verfügen jedoch nicht über eine eigene Kopie eines Betriebssystems, die übertragen werden kann. Daher gelten sie als schlanker als VMs. Container verfügen über ein eigenes Dateisystem, eine eigene CPU-Zuordnung, einen eigenen Arbeitsspeicher und einen eigenen Prozessspeicher. Mehrere Container, die auf derselben Hardware ausgeführt werden, sind weiterhin unabhängig wie VMs. Sie sind zudem von der Hardware sowie dem zugrundeliegenden Betriebssystem entkoppelt. Das bedeutet, dass derselbe Container unverändert auf mehreren Zielsystemen wie Windows, Linux, Unix, macOS und verschiedenen Public-Cloud-Anbietern ausgeführt werden kann. Dies ist sehr nützlich für Entwicklungs- und Bereitstellungsworkflows. Entwickler können Code in einem Container auf ihrem PC oder Mac schreiben, und derselbe Container kann dann ohne Änderungen auf einem beliebigen Betriebssystem der Serverklasse oder in der Cloud bereitgestellt werden.
Die Benutzerfreundlichkeit und die Vorteile von leichten Behältern führen dazu, dass sich ihre Zahl tendenziell vermehrt. Kubernetes bietet die Werkzeuge, um Container zu zähmen und zu verwalten.
Microservices beschreibt einen Ansatz für das Design und die Entwicklung von Anwendungen, der eine Anwendung in unabhängige, lose gekoppelte Dienste aufteilt, die über klar definierte Kommunikationsschnittstellen verfügen. Auf diese Weise können einzelne Services skaliert, aktualisiert oder geändert werden, ohne dass sich dies auf andere Microservices auswirkt. Es minimiert Code-Abhängigkeiten, bietet mehr Flexibilität in der Technologie und unterstützt eine erhöhte Wiederverwendbarkeit. Microservices erfordern zwar kein bestimmtes Bereitstellungsmodell (siehe oben), aber die granulare Unabhängigkeit von Microservices macht diesen Ansatz sehr gut für die Containerisierung geeignet.
Einige Organisationen, insbesondere solche, die einen Microservice-Ansatz für das Anwendungsdesign verfolgen, können Hunderte oder sogar Tausende von Containern von der Entwicklung bis zur Produktion bereitstellen. Diese Container sind oft über mehrere Cloud-Dienste und auch private Rechenzentren und Serverfarmen verteilt. Betriebsteams, die diese Anwendungen am Laufen halten und verfügbar halten müssen, benötigen Tools, um diese große Anzahl von Containern effizient zu verwalten. Dies wird als Container-Orchestrierung bezeichnet, und genau dafür wurde Kubernetes entwickelt.
Betriebsteams, Entwickler und DevOps-Teams setzen Kubernetes aufgrund seiner umfassenden Funktionalität, der großen und wachsenden Auswahl an Tools, die zur Ergänzung zur Verfügung stehen, und seiner Einführung bei den führenden Cloud-Service-Providern weiterhin ein. Viele Cloud-Anbieter bieten vollständig verwaltete Kubernetes-Dienste an.
Kubernetes bietet die folgenden Dienste, um Container zu orchestrieren:
Kubernetes-Bereitstellungen werden mit den folgenden logischen und physischen Komponenten erstellt:
Nachdem wir nun die grundlegenden Konzepte von Kubernetes vorgestellt haben, werden wir nächste Woche die Auswirkungen von Kubernetes auf Netzwerkadministratoren und die Herausforderungen, die Microservice-basierte Anwendungen mit sich bringen, untersuchen.
Wenn Sie derzeit Kubernetes und containerisierte Microservices nutzen möchten, sollten Sie sich hier den Kemp Ingress Controller für Kubernetes ansehen...
Schauen Sie sich unsere anderen Blogs in der Serie an:
Weitere Informationen finden Sie in unserem aufgezeichneten Webinar: Integration von Kemp Load Balancing mit Kubernetes.