Kubernetes in OpenStack

Kubernetes ist eine Plattform zur Bereitstellung und Verwaltung von Containern, mit der die Linux-Container-Orchestrierungs-Tools gestärkt werden sollen. Das Wachstum von Kubernetes beruht auf seiner langjährigen Erfahrung, die Google für mehrere Jahre gesammelt hat, bevor es der Open-Source-Community als eine der am schnellsten wachsenden container-basierten Anwendungsplattformen angeboten wurde. Kubernetes ist mit mehreren überwältigenden Funktionen ausgestattet, darunter Skalierung, automatische Bereitstellung und Ressourcenverwaltung über mehrere Hostcluster hinweg.

Magnum stellt Kubernetes im OpenStack-Ökosystem zur Verfügung. Wie bei Swarm können Benutzer die Magnum-API zum Verwalten und Betreiben von Kubernetes-Clustern, -Objekten und -Diensten verwenden. Hier eine Zusammenfassung der wichtigsten Player-Komponenten in der Kubernetes-Architektur:

Die Kubernetes-Architektur ist modular aufgebaut und stellt mehrere Dienste bereit, die auf mehrere Knoten verteilt sein können. Im Gegensatz zu Swarm verwendet Kubernetes verschiedene Terminologien:

  • Pods: Eine Sammlung von Containern, die die Anwendungseinheit bilden und die Netzwerkkonfiguration, Namespaces und den Speicher gemeinsam nutzen
  • Service: Eine Kubernetes-Abstraktionsschicht, die eine Gruppe von Pods als Dienst verfügbar macht, normalerweise über einen Lastenausgleich

Kubernetes definiert aus architektonischer Sicht im Wesentlichen folgende Komponenten:

  • Masternode : Steuert und orchestriert den Kubernetes-Cluster. Ein Masternode kann die folgenden Dienste ausführen:
  1. API-server: Hier werden API-Endpunkte zum Verarbeiten von RESTful-API-Aufrufen zur Steuerung und Verwaltung des Clusters bereitgestellt
  2. Controller manager: Hier sind verschiedene Verwaltungsdienste enthalten, darunter:
  3. Replication controller: Hiermit werden Pods im Cluster verwaltet, indem fehlerhafte Pods erstellt und entfernt werden.
  4. Endpoint controller: Hiermit werden Pods verbunden, indem Cluster-Endpunkte bereitgestellt werden.
  5. Node controller: Hiermit werden die Informationen zur Knoteninitialisierung und -erkennung innerhalb des Cloud-Anbieters verwaltet.
  6. Service controller: Hiermit werden Service-Backends in Kubernetes verwaltet, die hinter Load Balancern ausgeführt werden. Der Dienstcontroller konfiguriert Load Balancer basierend auf der Dienststatusaktualisierung.
  7. Scheduler: Hiermit wird festgelegt, auf welchem ​​Pod die Dienstbereitstellung erfolgen soll. Basierend auf der Kapazität der Knotenressourcen stellt der Scheduler sicher, dass der gewünschte Service auf den Knoten ausgeführt wird, die zum selben Pod gehören oder auf verschiedenen.
  8. Key-value store: Hier werden REST-API-Objekte wie Knoten- und Pod-Status, geplante Jobs, Informationen zur Dienstbereitstellung und Namespaces gespeichert. Kubernetes verwendet etcd als Hauptschlüsselwertspeicher, um Konfigurationsinformationen im Cluster gemeinsam zu nutzen.
  • Worker node: Hiermit wird die Laufzeitumgebung für Kubernetes-Pods und -Container verwaltet. Auf jedem Arbeitsknoten werden die folgenden Komponenten ausgeführt:
  1. Kubelet: Dies ist ein primärer Knotenagent , der Container verwaltet, die in den zugehörigen Pods ausgeführt werden. Der Kubelet-Prozess meldet regelmäßig den Integritätsstatus von Pods und Knoten an den Masterknoten.
  2. Docker: Dies ist die Standard-Container-Laufzeit-Engine, die von Kubernetes verwendet wird.
  3. Kube-proxy: Dies ist ein Netzwerk-Proxy, um Anforderungen an den richtigen Container weiterzuleiten. Kube-Proxy leitet den Datenverkehr über Pods innerhalb desselben Dienstes weiter.
n/a