Eintauchen in Kubernetes: Container und Komponenten
Was ist Kubernetes?
Permalink to "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
Permalink to "Hohe Sicherheit"Es verfügt über bessere Isolationseigenschaften, um das Betriebssystem für verschiedene Anwendungen freizugeben.
Portabilität
Permalink to "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
Permalink to "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
Permalink to "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 Aussenstehende 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
Permalink to "Vorteile von Kubernetes"Open Source und portabel
Permalink to "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
Permalink to "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
Permalink to "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
Permalink to "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
Permalink to "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
Permalink to "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 Massnahmen zur Behebung der Situation zu ergreifen.
Wenn Sie jedoch grosse Anwendungen mit Tausenden von Containern bereitstellen, ist dies ein unpraktischer Ansatz. Daher können Sie Ihre eigenen Skripte erstellen, um diese Probleme in gewissem Masse 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. Ausserdem 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?
Permalink to "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össert 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
Permalink to "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.
Schliesslich 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
Permalink to "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 anzuzeigenkubectl 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
.