OpenShift - Architektur
OpenShift ist ein Schichtsystem, bei dem jede Schicht mithilfe von Kubernetes und Docker-Clustern eng mit der anderen Schicht verbunden ist. Die Architektur von OpenShift ist so konzipiert, dass Docker-Container unterstützt und verwaltet werden können, die mithilfe von Kubernetes auf allen Ebenen gehostet werden. Im Gegensatz zur früheren Version von OpenShift V2 unterstützt die neue Version von OpenShift V3 die containerisierte Infrastruktur. In diesem Modell hilft Docker bei der Erstellung leichter Linux-basierter Container, und Kubernetes unterstützt die Aufgabe, Container auf mehreren Hosts zu orchestrieren und zu verwalten.
Komponenten von OpenShift
Eine der Schlüsselkomponenten der OpenShift-Architektur ist die Verwaltung der containerisierten Infrastruktur in Kubernetes. Kubernetes ist für die Bereitstellung und Verwaltung der Infrastruktur verantwortlich. In jedem Kubernetes-Cluster können mehr als ein Master und mehrere Knoten vorhanden sein, wodurch sichergestellt wird, dass das Setup keinen Fehlerpunkt aufweist.
Kubernetes Master Machine Components
Etcd- Es speichert die Konfigurationsinformationen, die von jedem der Knoten im Cluster verwendet werden können. Es handelt sich um einen Schlüsselwertspeicher mit hoher Verfügbarkeit, der auf mehrere Knoten verteilt werden kann. Es sollte nur für den Kubernetes API-Server zugänglich sein, da es möglicherweise vertrauliche Informationen enthält. Es ist ein verteilter Schlüsselwertspeicher, auf den alle zugreifen können.
API Server- Kubernetes ist ein API-Server, der alle Operationen im Cluster mithilfe der API bereitstellt. Der API-Server implementiert eine Schnittstelle, sodass verschiedene Tools und Bibliotheken problemlos mit ihm kommunizieren können. Eine kubeconfig ist ein Paket zusammen mit den serverseitigen Tools, die für die Kommunikation verwendet werden können. Es macht die Kubernetes-API verfügbar. “
Controller Manager- Diese Komponente ist für die meisten Kollektoren verantwortlich, die den Status des Clusters regulieren und eine Aufgabe ausführen. Es kann als Daemon betrachtet werden, der in einer nicht terminierenden Schleife ausgeführt wird und für das Sammeln und Senden von Informationen an den API-Server verantwortlich ist. Es arbeitet daran, den freigegebenen Status des Clusters abzurufen und dann Änderungen vorzunehmen, um den aktuellen Status des Servers in den gewünschten Status zu versetzen. Die Schlüsselcontroller sind Replikationscontroller, Endpunktcontroller, Namespacecontroller und Dienstkontocontroller. Der Controller-Manager führt verschiedene Arten von Controllern aus, um Knoten, Endpunkte usw. zu verwalten.
Scheduler- Es ist eine Schlüsselkomponente von Kubernetes Master. Es ist ein Dienst im Master, der für die Verteilung der Arbeitslast verantwortlich ist. Es ist dafür verantwortlich, die Auslastung der Arbeitslast auf Clusterknoten zu verfolgen und dann die Arbeitslast zu platzieren, auf der Ressourcen verfügbar sind, und die Arbeitslast zu akzeptieren. Mit anderen Worten, dies ist der Mechanismus, der für die Zuweisung von Pods zu verfügbaren Knoten verantwortlich ist. Der Scheduler ist für die Workload-Auslastung und die Zuweisung eines Pods zu einem neuen Knoten verantwortlich.
Kubernetes-Knotenkomponenten
Im Folgenden sind die Schlüsselkomponenten des Knotenservers aufgeführt, die für die Kommunikation mit dem Kubernetes-Master erforderlich sind.
Docker - Die erste Anforderung für jeden Knoten ist Docker, mit dessen Hilfe die gekapselten Anwendungscontainer in einer relativ isolierten, aber leichtgewichtigen Betriebsumgebung ausgeführt werden können.
Kubelet Service- Dies ist ein kleiner Dienst in jedem Knoten, der für die Weiterleitung von Informationen zum und vom Steuerebenendienst verantwortlich ist. Es interagiert mit dem etcd-Speicher, um die Konfigurationsdetails und Wright-Werte zu lesen. Dies kommuniziert mit der Master-Komponente, um Befehle zu empfangen und zu arbeiten. Der Kubelet-Prozess übernimmt dann die Verantwortung für die Aufrechterhaltung des Arbeitsstatus und des Knotenservers. Es verwaltet Netzwerkregeln, Portweiterleitung usw.
Kubernetes Proxy Service- Dies ist ein Proxy-Dienst, der auf jedem Knoten ausgeführt wird und dabei hilft, die Dienste dem externen Host zur Verfügung zu stellen. Es hilft bei der Weiterleitung der Anfrage an korrekte Container. Der Kubernetes Proxy Service kann einen primitiven Lastausgleich durchführen. Es stellt sicher, dass die Netzwerkumgebung vorhersehbar und zugänglich ist, gleichzeitig aber auch isoliert. Es verwaltet Pods auf Knoten, Volumes, Geheimnissen, erstellt neue Integritätsprüfungen für Container usw.
Integrierte OpenShift Container Registry
Die OpenShift-Containerregistrierung ist eine integrierte Speichereinheit von Red Hat, die zum Speichern von Docker-Images verwendet wird. Mit der neuesten integrierten Version von OpenShift wurde eine Benutzeroberfläche zum Anzeigen von Bildern im internen OpenShift-Speicher entwickelt. Diese Register können Bilder mit bestimmten Tags speichern, aus denen später Container erstellt werden.
Häufig verwendete Begriffe
Image- Kubernetes (Docker) -Bilder sind die Schlüsselbausteine der Containerized Infrastructure. Ab sofort unterstützt Kubernetes nur Docker-Images. In jedem Container in einem Pod befindet sich ein Docker-Image. Bei der Konfiguration eines Pods hat die Image-Eigenschaft in der Konfigurationsdatei dieselbe Syntax wie der Docker-Befehl.
Project - Sie können als umbenannte Version der Domäne definiert werden, die in der früheren Version von OpenShift V2 vorhanden war.
Container - Sie werden erstellt, nachdem das Image auf einem Kubernetes-Clusterknoten bereitgestellt wurde.
Node- Ein Knoten ist eine funktionierende Maschine im Kubernetes-Cluster, der auch als Minion for Master bezeichnet wird. Sie sind Arbeitseinheiten, die eine physische, VM- oder Cloud-Instanz sein können.
Pod- Ein Pod ist eine Sammlung von Containern und deren Speicherung in einem Knoten eines Kubernetes-Clusters. Es ist möglich, einen Pod mit mehreren Containern zu erstellen. Lassen Sie beispielsweise den Datenbankcontainer und den Webservercontainer im Pod.