Kemp Technologies Blogs

Was ist Kubernetes?

Kemp Technologies | Posted on | Kubernetes | Load Balancer

Einleitung

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.

Der Weg zur Containerisierung

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

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.

Was macht Kubernetes?

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:

  • Rollouts beschreiben die Ziel-Containerlandschaft, die für eine Anwendung benötigt wird, und überlassen Kubernetes den Prozess, um diesen Zustand zu erreichen.
  • Dazu gehören neue Bereitstellungen, das Ändern vorhandener bereitgestellter Container und auch Rollbacks, um Bereitstellungen zu entfernen, die nicht mehr benötigt werden.
  • Bei der Dienstermittlung wird ein Container oder andere Container mithilfe eines DNS-Namens oder einer IP-Adresse automatisch für das breitere Netzwerk verfügbar gemacht.
  • Die Speicherorchestrierung ermöglicht das Bereitstellen von Speicher aus der Cloud oder lokalen Ressourcen nach Bedarf und so lange, wie er benötigt wird.
  • Load Balancing innerhalb eines Clusters verwaltet die Last über mehrere Container hinweg, die dieselbe Anwendung bereitstellen, um eine konsistente Leistung zu gewährleisten.
  • Die Selbstheilung wird erreicht, indem Container auf Probleme überwacht und bei Bedarf automatisch neu gestartet werden.
  • Die Geheimnis- und Konfigurationsverwaltung ermöglicht die sichere Speicherung und Verwaltung vertraulicher Informationen wie Kennwörter, OAuth-Token und SSH-Schlüssel. Das Bereitstellen und Aktualisieren dieser Geheimnisse und Anwendungskonfigurationen, die sie verwenden, ohne dass die Container neu erstellt werden müssen, ist möglich, ohne dass die Geheimnisse im Netzwerk verfügbar gemacht werden.
  • Kubernetes-Architektur

    Kubernetes-Bereitstellungen werden mit den folgenden logischen und physischen Komponenten erstellt:

    • Cluster – die Kernbausteine der Kubernetes-Architektur. Cluster bestehen aus Knoten (siehe unten). Jeder Cluster verfügt über mehrere Worker-Knoten, die Container bereitstellen, ausführen und verwalten, sowie über mindestens einen Master-Knoten, der die Worker-Knoten steuert und überwacht.
    • Knoten – ein einzelner Computing-Host, bei dem es sich um eine physische Maschine, eine virtuelle Maschine oder eine Cloud-Instanz handeln kann. Knoten fungieren als Worker oder Master und müssen innerhalb eines Clusters von Knoten existieren (siehe oben). Worker-Knoten hosten und führen die bereitgestellten Container aus, und ein Master-Knoten in jedem Cluster verwaltet die Worker-Knoten im selben Cluster. Jeder Workerknoten führt einen Agenten aus, der als Kubelet bezeichnet wird und den der Masterknoten zur Überwachung und Verwaltung verwendet.
    • Pods – Gruppen von Containern, die Rechenressourcen und ein Netzwerk gemeinsam nutzen. In der Regel befinden sich Container, die eng gekoppelt sind, in einem einzigen Pod. Kubernetes skaliert Ressourcen auf Pod-Ebene. Wenn zusätzliche Kapazität benötigt wird, um eine Anwendung bereitzustellen, die in Containern in einem Pod ausgeführt wird, wird der gesamte Pod repliziert, um die Kapazität zu erhöhen.
    • Bereitstellungen – steuert die Erstellung einer containerisierten Anwendung und sorgt dafür, dass sie läuft, indem ihr Zustand in Echtzeit überwacht wird. Die Bereitstellung gibt an, wie viele Replikate eines Pods auf einem Cluster ausgeführt werden sollen. Wenn ein Pod fehlschlägt, wird er von der Bereitstellung neu erstellt.

    Zusammenfassung

    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...

    Die Ingress Controller-Serie

    Schauen Sie sich unsere anderen Blogs in der Serie an:

    Bevorstehendes Webinar

    Weitere Informationen finden Sie in unserem aufgezeichneten Webinar: Integration von Kemp Load Balancing mit Kubernetes.