Eintauchen in Kubernetes: Container und Komponenten

Kubernetes ist ein Tool, mit dem Sie containerisierte Bereitstellungslösungen verwalten können, und Kubernetes ist von Natur aus ein Tool, das wirklich die nächste Stufe der Bereitstellung darstellt.

Was ist Kubernetes?

Im Wesentlichen ist Kubernetes eine Open-Source-Plattform, die zum Verwalten und Bereitstellen einer Gruppe von Containern verwendet wird. Diese Container könnten so etwas wie Docker sein. Daher werden mehrere Docker-Elemente zusammen verwaltet.
Tatsächlich wird Kubernetes im Allgemeinen zusammen mit Docker zur besseren Steuerung und Implementierung von Containeranwendungen verwendet.
Randnotiz: Containerisierte Anwendungen bedeutet, dass eine Anwendung zusammen mit allen Dateien, Bibliotheken und Paketen gebündelt wird, die für eine zuverlässige und effiziente Ausführung auf mehreren Plattformen erforderlich sind.

Kubernetes hat einige Funktionen wie: hohe Sicherheit , Portabilität und dass es Zeit spart .

Hohe Sicherheit

Es verfügt über bessere Isolationseigenschaften, um das Betriebssystem für verschiedene Anwendungen freizugeben.

Portabilität

Es funktioniert mit Docker-Container-Lösungen, mit denen Sie Ihre Infrastruktur genau so verwalten können, wie Sie verwaltet werden möchten, und sie an die Anforderungen der Kunden anpassen können, die die Lösung verwenden.

Zeitersparnis

Es kann den freien Knoten automatisch Ressourcen zuweisen und spart so Zeit. Dadurch kann die Infrastruktur wesentlich effizienter und effektiver betrieben werden.

Open-Source-Plattform

Google hat zunächst Kubernetes entwickelt. Es wurde als Projekt bei Google eingeführt. Es wurde 2014 als Open-Source-Plattform veröffentlicht, damit Außenstehende die Vorteile von Kubernetes Tools für das Containerisierungsmanagement nutzen können. Die Kubernetes-Architektur wurde für Anwendungen, die in der Cloud ausgeführt werden sollen, praktisch gestaltet. Heute wird es von der Cloud-Native Computing Foundation verwaltet.

Vorteile von Kubernetes

Open Source und portabel

Kubernetes ist plattformübergreifend kompatibel. Es ist ein 100% Open Source Projekt und bietet somit mehr Flexibilität.

Skalierbarkeit der Arbeitslast

Kuberentes ist als sehr effizient bekannt. Neue Server können problemlos aufgenommen oder gelöscht werden. Es ist skalierbar, da es die Anzahl der ausgeführten Container automatisch manuell ändert.

Hohe Verfügbarkeit

Es wurde entwickelt, um die Verfügbarkeit von Containern und Infrastruktur zu berücksichtigen. Es kann in jeder Umgebung verwendet werden.

Entwickelt für die Bereitstellung

Eines der Hauptmerkmale der Containerisierung ist die Möglichkeit, Test-, Verwaltungs- und Bereitstellungsphasen zu beschleunigen. Kubernetes wurde für die Bereitstellung entwickelt und bietet Zugriff auf viele seiner Funktionen.

Serviceerkennung und Lastausgleich

Kubernetes kann einen Container mithilfe von DNS oder seiner IP-Adresse anzeigen. Wenn die Verkehrslast hoch ist, wird die Last ausgeglichen und das Netzwerk so verteilt, dass die Bereitstellung stabil ist.

Die Bedeutung der Container Orchestration-Lösung

Mit Docker können wir eine einzelne Instanz der Anwendung mit einem Docker-Ausführungsbefehl ausführen. Wenn wir beispielsweise eine NodeJs-Anwendung ausführen möchten, führen wir den Docker-Ausführungsknoten js aus.
Dies ist jedoch nur eine Instanz der Anwendung auf einem Docker-Host. Wenn jedoch die Anzahl der Benutzer zunimmt und die Instanz die Last nicht mehr verarbeitet, müssen zusätzliche Instanzen der Anwendung bereitgestellt werden, indem der Befehl docker run mehrmals ausgeführt wird.
Das müssen Sie also selbst tun. Und nicht nur das, Sie müssen diese Anwendungen genau beobachten. Wenn der Container ausfällt, sollten Sie dies erkennen und den Docker-Befehl erneut ausführen und eine andere Instanz dieser App bereitstellen können. Was ist mit der Hilfe des Docker-Hosts selbst? Was ist, wenn der Host abstürzt und nicht erreichbar ist? Auf die auf diesem Host gehosteten Container kann ebenfalls nicht mehr zugegriffen werden. Um diese Probleme zu beheben, ist ein engagierter Techniker erforderlich, der den Status und die Leistung der Container überwachen kann, um die erforderlichen Maßnahmen zur Behebung der Situation zu ergreifen.
Wenn Sie jedoch große Anwendungen mit Tausenden von Containern bereitstellen, ist dies ein unpraktischer Ansatz. Daher können Sie Ihre eigenen Skripte erstellen, um diese Probleme in gewissem Maße zu lösen.
Daher ist Container Orchestration die Lösung.
Container Orchestration besteht aus Tools und Skripten, mit denen Container in einer Produktionsumgebung gehostet werden können.
In der Regel besteht eine Container Orchestration-Lösung aus mehreren Docker-Hosts, die Container hosten können, sodass die Anwendung auch dann für die anderen zugänglich ist, wenn einer ausfällt. Mit einer Container-Orchestrierung können Sie daher problemlos Hunderte von Instanzen mit einem einzigen Befehl für Ihre Anwendung bereitstellen. Diese Lösungen können dazu beitragen, die Anzahl der Instanzen automatisch zu erhöhen, wenn Benutzer zunehmen, und die Anzahl zu verringern, wenn Benutzer abnehmen. Einige Lösungen können sogar dazu beitragen, automatisch zusätzlichen Host anzuhängen, um die Benutzerlast zu unterstützen, aber nicht nur Clustering und Skalierung, sondern auch die erweiterte Vernetzung zwischen diesen Containern auf verschiedenen Hosts. Außerdem wird das Ausgleichen von Benutzeranforderungen auf verschiedene Hosts geladen. Ein weiterer Punkt ist, dass es Konfigurationsmanagement und Sicherheit innerhalb des Clusters unterstützt.
Es gibt heute mehrere Container Orchestration-Lösungen.
Docker hat Docker Swarm; Kubernetes ist von Google und Mesos von Apache. Docker Swarm ist zwar einfach einzurichten und in Betrieb zu nehmen, es fehlen jedoch einige der Funktionen für die automatische Skalierung, die für komplexe Anwendungen in Produktionsqualität erforderlich sind. Im Gegenteil, Mesos ist etwas schwierig zu konfigurieren und zu starten, unterstützt jedoch viele erweiterte Funktionen.
Kubernetes ist wohl das beliebteste von allen. Es erfordert eine etwas komplexe Konfiguration und für den Einstieg, bietet jedoch viele Optionen zum Anpassen von Bereitstellungen und unterstützt viele verschiedene Anbieter. Kubernetes wird jetzt von allen öffentlichen Cloud-Dienstanbietern wie GCP, Azure und AWS unterstützt. Das Kubernetes-Projekt ist ein hochrangiges Projekt auf GitHub.

Wie ist also die Verbindung zwischen Kubernetes und Docker?

Nun, Kubernetes verwendet Docker, um Apps in Form von Docker-Containern zu hosten. Kubernetes unterstützt Alternativen zu Docker wie Rocket CoreOS, daher muss es nicht immer Docker sein.

Mit der Docker-CLI können Sie eine einzelne Instanz einer App ausführen.
Während bei Kubernetes mithilfe der als kube-control bezeichneten Kubernetes-CLI tausend Instanzen derselben App mit einem einzigen Befehl ausgeführt werden können. kubectl run --replicas = 1000 my-own-server.
Sie können es auch mit einem anderen Befehl auf 2.000 skalieren. Basierend auf der Benutzerlast können Kubernetes automatisch so konfiguriert werden, dass Instanzen vergrößert und verkleinert werden.

Kubernetes kann diese 2000 App-Instanzen in einem fortlaufenden Upgrade einzeln mit einem einzigen Befehl aktualisieren. kubectl Rolling-Update My-Web-Server.
Wenn etwas nicht ausgeführt werden kann, können diese Bilder mit einem einzigen Befehl zurückgesetzt werden.
Kubernetes kann helfen, neue Funktionen der App zu testen, indem nur ein Prozentsatz dieser Instanzen durch A-B-Testmethoden aktualisiert wird. Die offene Architektur von Kubernetes bietet Unterstützung für viele verschiedene Netzwerke und Speicheranbieter. Jede Netzwerk- oder Speichermarke, an die Sie denken können, verfügt über ein Plugin für Kubernetes. Kubernetes bietet auch einige Authentifizierungs- und Autorisierungsfunktionen.

Kubernetes Architektur

Werfen wir einen Blick auf die Kubernetes-Architektur. Ein Kubernetes-Cluster besteht aus einer Menge von Knoten . Ein Knoten ist eine physische oder virtuelle Maschine, auf der eine Kubernetes-Software installiert ist.
Node ist eine Worker-Maschine, auf der Container von Kubernetes gestartet werden. Was aber, wenn der Knoten, auf dem die Anwendung ausgeführt wird, ausfällt?
Nun, offensichtlich geht die Anwendung aus. Es wird also mehr als ein Knoten benötigt. Daher ist ein Cluster eine Gruppe von Knoten, die zusammen gruppiert sind. Auf diese Weise kann die Anwendung auch dann von den anderen Knoten aus auf die Anwendung zugreifen, wenn ein Knoten ausfällt.
Nach dem Cluster kommt der Master herein.
Master ist für die Verwaltung des Clusters verantwortlich, in dem Informationen zu den Mitgliedern der Cluster gespeichert und überwacht werden. Es überwacht die Knoten im Cluster und ist für die tatsächliche Orchestrierung der Container auf den Arbeitsknoten verantwortlich.
Wenn Kubernetes auf einem System installiert ist, werden die folgenden Komponenten installiert: Der API-Server, etcd-Server, Kubelet, Container-Laufzeit (eine Engine wie Docker) , Controller und Scheduler .
Der erste ist der API-Server , der als Front-End für Kubernetes fungiert. Die Benutzerverwaltungsgeräte und CLIs kommunizieren alle mit dem API-Server, um mit dem Kubernetes-Cluster zu interagieren.

Weiter etcd , ein verteilter zuverlässiger Schlüsselwert, in dem alle Daten gespeichert sind, die zur Verwaltung des Clusters verwendet werden.
Wenn der Cluster mehrere Knoten und Master enthält, speichert etcd alle diese Informationen verteilt. Es ist für die Erstellung von Protokollen innerhalb des Clusters verantwortlich, um sicherzustellen, dass keine Konflikte zwischen den Mastern bestehen. Dann ist Scheduler für die Verteilung der Container auf die Knoten verantwortlich. Es sucht nach neu erstellten Containern und weist sie Knoten zu. Sie sind das Gehirn hinter der Orchestrierung, wenn sie reagieren und Knotencontainer oder Endpunkte benachrichtigen.
Als nächstes treffen die Controller Entscheidungen, um in solchen Fällen neue Container aufzurufen. Die Container-Laufzeit ist dann die zugrunde liegende Software, die zum Ausführen von Containern verwendet wird.
Schließlich ist es der Kubelet-Agent , der im Cluster ausgeführt wird. Es stellt sicher, dass die Container wie erwartet auf den Knoten ausgeführt werden. Das folgende Bild beschreibt die Kubernetes-Komponenten.

Befehle für Kubernetes

Darüber hinaus wird das Kubernetes CLI-Dienstprogramm "kubectl" zum Bereitstellen und Verwalten von Anwendungen in einem Kubernetes-Cluster verwendet, um clusterbezogene Informationen abzurufen oder den Status der Knoten abzurufen. Hier sind einige Befehle bezüglich kubectl:

  • kubectl run hello-world - diente zum Bereitstellen einer App im Cluster.
  • kubectl cluster-info - um Informationen über den Cluster anzuzeigen
  • kubectl get node - um alle Knotenteile eines Clusters aufzulisten.

Und um Hunderte von Instanzen von Apps auszuführen, hilft dieser einzelne Kubernetes-Befehl: kubectl run my-own-app --image = my-own-app --replicas = 2000.


Njomza Mehmeti

Junior Software Engineer

I love integrating server-side web application logic and am excited to solve problems while being part of a transparent, diverse, hardworking and supportive team. I have a great passion for developing beautiful and innovative applications.


facebook icontwitter iconlinkedinwhatsapp iconmail icon