We couldn't find a match for given <KEYWORD>, please try again.

Was ist eine Kubernetes-Architektur?

Kubernetes ist eine Architektur, die einen lose gekoppelten Mechanismus für die Serviceerkennung in einem Cluster bietet. Ein Kubernetes-Cluster verfügt über eine oder mehrere Steuerungsebenen und einen oder mehrere Computing-Knoten. Im Allgemeinen ist die Steuerungsebene dafür verantwortlich, den gesamten Cluster zu verwalten, die Application Program Interface (API) bereitzustellen und sowohl Initiieren als auch Herunterfahren von Computing-Knoten basierend auf einer gewünschten Konfiguration zu planen. Jeder Computing-Knoten führt eine Container-Laufzeit wie Docker zusammen mit einem Agent (kubelet) aus, der mit der Steuerungsebene kommuniziert. Jeder Knoten kann aus Bare-Metal-Servern, On-Premises- oder cloudbasierten virtuellen Maschinen (VMs) bestehen.

Grundlagen von vSphere with Tanzu – Eine Einführung für vSphere-Administratoren

Warum VMware-Virtualisierungslösungen für Kubernetes und Container?

Was sind die Komponenten einer Kubernetes-Architektur?

Zu den Hauptkomponenten eines Kubernetes-Clusters gehören:

Knoten: Knoten sind VMs oder physische Server, die containerbasierte Anwendungen hosten. Jeder Knoten in einem Cluster kann eine oder mehrere Anwendungsinstanzen ausführen. Unter Umständen ist nur ein Knoten vorhanden, jedoch besteht ein typischer Kubernetes-Cluster aus mehreren Knoten (Bereitstellungen mit Hunderten oder mehr Knoten sind nicht unüblich).

Image-Registry: Container-Images werden in der Registry gespeichert und von der Steuerungsebene auf Knoten übertragen, um sie in Container-Pods auszuführen.

Pods: In Pods werden containerbasierte Anwendungen ausgeführt. Sie können einen oder mehrere Container enthalten und sind die kleinste Bereitstellungseinheit für Anwendungen in einem Kubernetes-Cluster.

Wie sieht die Architektur der Kubernetes-Steuerungsebene aus?

Eine Kubernetes-Steuerungsebene ist die Steuerungsebene für einen Kubernetes-Cluster. Sie umfasst folgende Komponenten:

  • kube-apiserver: Wie der Name schon sagt, stellt der API-Server die Kubernetes-API bereit, die die Kommunikationszentrale bildet. Externe Kommunikation über die Befehlszeilenschnittstelle (Command Line Interface, CLI) oder andere Benutzeroberflächen wird an kube-apiserver weitergeleitet. Auch die gesamte Kommunikation zwischen Steuerungsebenen und Knoten läuft über den API-Server.
  • etcd: Der Schlüssel-Wert-Speicher, in dem alle clusterbezogenen Daten gespeichert sind. etcd ist hochverfügbar und konsistent, da der gesamte Zugriff auf etcd über den API-Server erfolgt. Informationen in etcd sind allgemein im menschenlesbaren YAML-Format (steht für die rekursive „YAML Ain’t Markup Language“) formatiert.
  • kube-scheduler: Wenn ein neuer Pod erstellt wird, weist diese Komponente ihn einem Knoten zur Ausführung zu, basierend auf Ressourcenanforderungen, Richtlinien und Affinitätsspezifikationen bezüglich Geolokalisierung und Interferenzen mit anderen Workloads.
  • kube-controller-manager: Auch wenn ein Kubernetes-Cluster über mehrere Controller-Funktionen verfügt, sind diese alle in einer einzigen Binärdatei namens „kube-controller-manager“ zusammengefasst.

Zu den Controller-Funktionen innerhalb dieses Prozesses gehören:

  • Replikations-Controller: Stellt sicher, dass die richtige Anzahl von Pods für jeden im Cluster ausgeführten replizierten Pod vorhanden ist
  • Knoten-Controller: Überwacht den Zustand jedes Knotens und benachrichtigt den Cluster, wenn Knoten online gehen oder nicht mehr reagieren
  • Endpunkt-Controller: Verbindet Pods und Services, um das Endpunktobjekt zu füllen
  • Servicekonto- und Token-Controller: Weist neuen Namespaces im Cluster API-Zugriffstoken und Standardkonten zu
  • cloud-controller-manager: Wenn der Cluster teilweise oder vollständig cloudbasiert ist, verknüpft cloud-controller-manager den Cluster mit der API des jeweiligen Cloud-Anbieters. Dabei werden nur die spezifischen Kontrollen des Cloud-Anbieters ausgeführt. cloud-controller-manager ist nicht in Clustern vorhanden, die sich vollständig on-premises befinden. Mehr als ein cloud-controller-manager kann in einem Cluster ausgeführt werden, um Fehlertoleranz zu unterstützen oder die allgemeine Cloud-Performance zu verbessern.

cloud-controller-manager beinhaltet u. a. folgende Elemente:

  • Knoten-Controller: Ermittelt den Status eines cloudbasierten Knotens, der nicht mehr reagiert, z. B. wenn er gelöscht wurde
  • Routen-Controller: Richtet Routen in der Infrastruktur von Cloud-Anbietern ein
  • Service-Controller: Verwaltet den Lastausgleich von Cloud-Anbietern

Wie sieht die Knotenarchitektur in Kubernetes aus?

Knoten sind die Maschinen (entweder VMs oder physische Server), auf denen Kubernetes auszuführende Pods platziert. Zu den Knotenkomponenten zählen:

kubelet: Jeder Knoten verfügt über einen Agent namens kubelet. Er stellt sicher, dass die in den PodSpecs beschriebenen Container ordnungsgemäß ausgeführt werden.

kube-proxy: Ein Netzwerk-Proxy auf jedem Knoten, der Netzwerkknoten verwaltet; unterstützt die Kommunikation zwischen Pods und Netzwerksitzungen inner- oder außerhalb von Clustern, wobei Betriebssystempakete gefiltert werden (sofern vorhanden)

Container-Laufzeit: Software, die für die Ausführung containerbasierter Anwendungen verantwortlich ist. Obwohl Docker am weitesten verbreitet ist, unterstützt Kubernetes jede Laufzeit, die der Kubernetes-CRI (Container Runtime Interface) entspricht.

Welche weiteren Kubernetes-Infrastrukturkomponenten gibt es?

Pods: Durch die Kapselung eines (oder mehrerer) Anwendungs-Container bilden Pods die grundlegendste Ausführungseinheit einer Kubernetes-Anwendung. Jeder Pod enthält den Code und die Storage-Ressourcen, die für die Ausführung erforderlich sind, und verfügt über eine eigene IP-Adresse. Pods umfassen auch Konfigurationsoptionen. In der Regel besteht ein Pod aus einem oder mehreren Containern, die mit einer Anwendung oder Business-Funktion gekoppelt sind und eine Reihe von Ressourcen und Daten gemeinsam nutzen.

Bereitstellungen: Eine Methode zur Bereitstellung containerbasierter Anwendungs-Pods. Der in einer Bereitstellung beschriebene gewünschte Zustand bewirkt, dass Controller den tatsächlichen Zustand eines Clusters ändern, um diesen Zustand ordnungsgemäß zu erreichen. Informieren Sie sich über Kubernetes-Bereitstellungen.

ReplicaSet: Stellt sicher, dass eine bestimmte Anzahl von identischen Pods zu einem bestimmten Zeitpunkt ausgeführt wird

Cluster-DNS: Unterstützt die für den Betrieb von Kubernetes-Services erforderlichen DNS-Einträge

Überwachung von Container-Ressourcen: Erfasst und protokolliert Container-Kennzahlen in einer zentralen Datenbank

Wie lauten die Best Practices und Designprinzipien für Kubernetes-Architekturen?

Die Best Practices von Gartner für Container sehen eine Plattformstrategie vor, die Sicherheit, Governance, Überwachung, Storage, Networking, Container-Lebenszyklusmanagement und Orchestrierung (z. B. Kubernetes) berücksichtigt.

Nachstehend werden einige Best Practices für die Architektur von Kubernetes-Clustern aufgeführt:

  • Stellen Sie sicher, dass Sie ein Update auf die neueste Kubernetes-Version (1.18 zum Zeitpunkt der Erstellung dieses Artikels) durchgeführt haben.
  • Investieren Sie vorab in Schulungen für Entwickler- und Operations-Teams.
  • Implementieren Sie Governance unternehmensweit. Stimmen Sie Tools und Anbieter auf die Kubernetes-Orchestrierung ab und integrieren Sie sie entsprechend.
  • Erhöhen Sie die Sicherheit, indem Sie Image-Scans in Ihren CI/CD-Prozess integrieren und Prüfungen während der Erstellungs- und Ausführungsphasen durchführen. Open-Source-Code aus GitHub-Repositorys sollte stets als verdächtig eingestuft werden.
  • Führen Sie rollenbasierte Zugriffskontrolle (Role-Based Access Control, RBAC) für den gesamten Cluster ein. Zero-Trust-Modelle mit minimalen Zugriffsrechten sollten standardmäßig vorhanden sein.
  • Schützen Sie Container noch besser, indem Sie nur Nicht-Root-Anwender einsetzen und das Dateisystem auf Lesezugriff beschränken.
  • Vermeiden Sie Standardwerte, da einfache Aussagen weniger fehleranfällig sind und Absichten besser demonstrieren.
  • Seien Sie bei der Verwendung grundlegender Docker Hub-Images vorsichtig, da sie Malware oder unnötigen Code enthalten können. Beginnen Sie mit schlankem, sauberem Code und erstellen Sie auf dieser Grundlage Pakete. Kleine Images werden schneller erstellt, beanspruchen weniger Speicherplatz und werden auch schneller abgerufen.
  • Einfache Container: Verwenden Sie einen Prozess pro Container, sodass der Orchestrator melden kann, ob dieser Prozess ordnungsgemäß funktioniert oder nicht.
  • Im Zweifelsfall oder bei Abstürzen startet Kubernetes einen ausgefallenen Container neu.
  • Seien Sie ausführlich: Deskriptive Bezeichnungen helfen aktuellen Entwicklern und sind für nachfolgende Entwickler von unschätzbarem Wert.
  • Gehen Sie bei Microservices nicht zu detailliert vor: Nicht jede Funktion innerhalb einer logischen Codekomponente erfordert einen eigenen Microservice.
  • Sinnvolle Automatisierung: Durch die Automatisierung der CI/CD-Pipeline können Sie manuelle Kubernetes-Bereitstellungen vollständig vermeiden.
  • Nutzen Sie livenessProbe und readinessProbe, um Pod-Lebenszyklen zu verwalten. Andernfalls werden Pods während der Initialisierung beendet oder erhalten Anwenderanfragen, bevor sie einsatzbereit sind.

Kubernetes-Architekturen sind unkompliziert und intuitiv. Die lose Kopplung zwischen Steuerungsebene und Knoten bietet nahezu unbegrenzte Flexibilität. Außerdem können Sie Anwendungen praktisch sofort horizontal skalieren, um sich ändernde Anforderungen zu erfüllen, Anwender auf neue Builds zu migrieren und die Migration von On-Premises- zu cloudbasierten Knoten oder zwischen mehreren Clouds zu unterstützen und so von den gewünschten Funktionen der einzelnen Cloud-Anbieter zu profitieren.

Zugehörige Lösungen und Produkte

Anwendungsmodernisierung mit Kubernetes

Führen Sie Ihre herkömmlichen und modernen Anwendungen parallel aus.

VMware Tanzu Kubernetes Grid

Optimieren Sie Abläufe in einer Multi-Cloud-Infrastruktur.

Horizon Cloud on Microsoft Azure

Cloudnative virtuelle Desktop-Plattform