GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Was ist Kubernetes? Vollständiger Leitfaden

Einführung

Die Bereitstellung von Containern hat etablierte Softwareentwicklungspraktiken verändert. Da neue Tools und Techniken erforderlich waren, entwickelte Google Kubernetes, ein Open-Source-Container-Orchestrierungssystem für die automatische Skalierung, Bereitstellung und Verwaltung von Anwendungen.

Es bietet eine einheitliche API-Schnittstelle, die selbst die kompliziertesten Systeme verwalten kann, die über mehrere Server und Plattformen verteilt sind.

Erfahren Sie, was Kubernetes zu einem unverzichtbaren Tool für die Verwaltung und Bereitstellung von Containern macht.

Was ist Container-Orchestrierung?

Ein Container-Orchestrierungstool , wie Kubernetes, automatisiert das Container-Management in einer sich ständig verändernden und chaotischen Umgebung. Um seine Rolle vollständig zu verstehen, werden wir tief in die Komplexität von Containerumgebungen eintauchen.

Container sind kleine virtuelle Umgebungen mit individuellem Arbeitsspeicher, Systemdateien und Verarbeitungsspeicher. Sie benötigen kein eigenes Betriebssystem und sind viel leichter als herkömmliche virtuelle Maschinen . Ihre Größe und Autarkie machen sie tragbar und über verschiedene Geräte und Betriebssysteme hinweg unbegrenzt skalierbar.

Entwickler können jetzt Anwendungen als eine Reihe kleinerer, unabhängiger Microservices entwerfen. Idealerweise sollte ein einzelner Dienst nur eine einzige Funktion ausführen. Diese Microservices werden dann gekoppelt und schnell und einfach auf einem Kubernetes-Cluster bereitgestellt.

Wie funktioniert Kubernetes?

Container sind so leicht wie möglich konstruiert. Dadurch sind sie zerbrechlich und vergänglich. Anstatt die Haltbarkeit eines einzelnen Containers zu erhöhen, nutzt Kubernetes die instabile Natur eines Containers und verwandelt diese Schwäche in einen Vorteil.

Kubernetes benötigt nur einen allgemeinen Rahmen dafür, wie Ihr Cluster aussehen soll. Dieses Framework ist normalerweise eine grundlegende Manifestdatei, die Sie Kubernetes mithilfe eines Befehlszeilenschnittstellentools bereitstellen.

Die standardmäßige Kubernetes-Befehlszeilenschnittstelle heißt kubectl . Kubectl wird verwendet, um Clusterressourcen direkt zu verwalten und dem Kubernetes-API-Server Anweisungen zu geben. Der API-Server fügt dann automatisch Container in Ihrem Cluster hinzu und entfernt sie, um sicherzustellen, dass der definierte gewünschte Zustand eingehalten wird und der tatsächliche Zustand des Clusters immer übereinstimmen.

Die Hauptelemente eines Kubernetes-Clusters sind der Master-Knoten , Worker-Knoten und Pods . Die Komponenten, die globale Entscheidungen über den Cluster treffen, wie der API-Server, befinden sich auf dem Master-Knoten.

Kubernetes-Masterknoten

Ein Knoten ist eine physische Maschine oder VM. Der Master-Knoten ist die Container-Orchestrierungsschicht eines Clusters. Die Komponenten des Master Node verwalten Worker Nodes und weisen jedem einzelne Aufgaben zu. Es ist verantwortlich für die Einrichtung und Aufrechterhaltung der Kommunikation innerhalb des Clusters und für den Lastausgleich der Arbeitslasten.

Master-Knoten

API-Server Der API-Server kommuniziert mit allen Komponenten innerhalb des Clusters.
Schlüsselwertspeicher (usw.) Ein leichter verteilter Schlüsselwertspeicher, der zum Sammeln aller Clusterdaten verwendet wird.
Verantwortlicher Verwendet den API-Server, um den Zustand des Clusters zu überwachen. Es versucht, den tatsächlichen Status des Clusters so zu verschieben, dass er mit dem gewünschten Status aus Ihrer Manifestdatei übereinstimmt.
Scheduler Plant neu erstellte Pods auf Worker-Knoten. Wählt immer Knoten mit dem geringsten Datenverkehr aus, um die Arbeitslast auszugleichen.

Kubernetes-Worker-Knoten

Die Master-Knoten-Komponenten steuern die Worker-Knoten . Es gibt mehrere Instanzen von Worker-Knoten, die jeweils ihre zugewiesenen Aufgaben ausführen. Diese Knoten sind die Maschinen, auf denen die containerisierten Workloads und Speichervolumes bereitgestellt werden.

Worker-Knoten

Kubelet Ein Daemon, der auf jedem Knoten läuft und auf die Anfragen des Masters antwortet, Pods auf dieser Maschine zu erstellen, zu zerstören und zu überwachen.
Containerlaufzeit Eine Containerlaufzeit Ruft Images aus einer Container-Image-Registrierung ab und startet und stoppt Container. Dies ist normalerweise eine Software oder ein Plug-in eines Drittanbieters, z. B. Docker.
Kube-Proxy Ein Netzwerk-Proxy, der die Netzwerkkommunikation mit Ihren Pods innerhalb oder außerhalb des Clusters aufrechterhält.
Add-ons (DNS, Web-UI...) Zusätzliche Funktionen, die Sie Ihrem Cluster hinzufügen können, um bestimmte Funktionen zu erweitern.
Pod Ein Pod ist das kleinste Planungselement in Kubernetes. Es stellt einen „Wrapper“ für den Container mit dem Anwendungscode dar. Wenn Sie Ihre App innerhalb eines Kubernetes-Clusters skalieren müssen, können Sie dies nur tun, indem Sie Pods hinzufügen oder entfernen. Ein Knoten kann mehrere Pods hosten.

So verwalten Sie Kubernetes-Cluster

Kubernetes verfügt über mehrere Instrumente, die Benutzer oder interne Komponenten verwenden, um Objekte innerhalb des Kubernetes-Clusters zu identifizieren, zu verwalten und zu manipulieren.

Label

Etiketten sind einfache Schlüssel/Wert-Paare, die Pods zugewiesen werden können. Einmal zugewiesene Pods sind einfacher zu identifizieren und zu steuern. Die Labels gruppieren und organisieren die Pods in einer benutzerdefinierten Teilmenge. Die Möglichkeit, Pods zu gruppieren und ihnen aussagekräftige Kennungen zuzuweisen, verbessert die Kontrolle eines Benutzers über einen Cluster.

Anmerkungen

Ähnlich wie Labels, Anmerkungen sind ebenfalls Schlüssel/Wert-Paare und können verwendet werden, um Metadaten an Objekte anzuhängen. Kubernetes verwendet jedoch keine Anmerkungen zum Auswählen und Identifizieren von Objekten.

Anmerkungen speichern Informationen, die nicht von den internen Ressourcen von Kubernetes verwendet werden sollen. Sie können Kontaktinformationen des Administrators, allgemeine Bild- oder Build-Informationen, bestimmte Datenspeicherorte oder Tipps zur Protokollierung enthalten. Mit Anmerkungen müssen diese nützlichen Informationen nicht mehr auf externen Ressourcen gespeichert werden, wodurch die Leistung gesteigert wird.

Namespaces in Kubernetes

Jedes Objekt in einem Kubernetes-Cluster hat eine eindeutige ID und einen Namen das bezeichnet seinen Ressourcentyp. Ein Namespace wird verwendet, um eine Gruppe von Ressourcen getrennt zu halten. Jeder Name innerhalb eines Namensraums muss eindeutig sein, um Probleme mit Namenskollisionen zu vermeiden. Es gibt keine solchen Einschränkungen, wenn derselbe Name in verschiedenen Namensräumen verwendet wird.

Dieses charakteristische Merkmal ermöglicht es Ihnen, getrennte Instanzen desselben Objekts mit demselben Namen in einer verteilten Umgebung zu behalten.

Um vorhandene Namespaces in einem Cluster aufzulisten, geben Sie den folgenden Befehl in Ihre Befehlszeilenschnittstelle ein:

kubectl get namespaces

Replikationscontroller

Das Konzept der Microservices bedeutet implizit, dass mehrere Instanzen eines bestimmten Dienstes bereitgestellt und gleichzeitig ausgeführt werden müssen. Replikationscontroller Verwalten Sie die Anzahl der Replikate für eine bestimmte Instanz eines Pods. Durch Kombinieren von Replikationscontrollern mit den benutzerdefinierten Labels können Sie die Anzahl der Pods in einem Cluster einfach verwalten, indem Sie das entsprechende Label verwenden.

Beispielsweise können wir die Anzahl der Replikate in unserer Konfigurationsdatei auf fünf (5) festlegen. Wenn derzeit nur drei (3) Replikate ausgeführt werden, dreht Kubernetes zwei (2) weitere, um unserem gewünschten Zustand zu entsprechen. Wenn 10 Replikate ausgeführt werden, beendet Kubernetes fünf (5) davon.

Kubernetes arbeitet kontinuierlich daran, die Anzahl der Replikate mit der in Ihrer Konfigurationsdatei definierten Anzahl in Einklang zu bringen.

Bereitstellung

Eine Anstellung ist ein Mechanismus, der eine Vorlage erstellt, die sicherstellt, dass Pods wie vom Benutzer definiert ausgeführt, aktualisiert oder zurückgesetzt werden. Eine Bereitstellung kann einen einzelnen Pod überschreiten und sich über mehrere Pods erstrecken.

Replikationscontroller steuern die Anzahl der Replikate eines Dienstes. Pods werden regelmäßig zu einem Cluster hinzugefügt oder daraus entfernt. Während dieses Prozesses bewegen sich Pods oft im Cluster und werden sogar auf verschiedenen Knoten bereitgestellt. Aus diesem Grund ist die IP-Adresse eines Pods nicht konstant. Der Kubernetes-Dienst verwendet einen Labelselektor, um Pods zu gruppieren und sie mit einer einzigen virtuellen IP zu abstrahieren, die verwendet wird, um diese Pods zu erkennen und mit ihnen zu interagieren.

Warum brauchen Sie Kubernetes?

Effiziente Ressourcennutzung

Container-Orchestrierungstools wie Kubernetes schonen Ressourcen effizienter, als es ein Mensch jemals könnte. Kubernetes überwacht den Cluster und trifft Entscheidungen darüber, wo Ihre Container gestartet werden sollen, basierend auf den Ressourcen, die derzeit auf Ihren Knoten verbraucht werden.

Container-Kommunikation und -Synchronisierung

Da eine App oft mehr als einen Container benötigt, kann Kubernetes Multi-Container-Anwendungen bereitstellen und sicherstellen, dass alle Container synchronisiert sind und miteinander kommunizieren.

Kubernetes bietet Einblick in den Zustand Ihrer Anwendung. Es kann wichtige Informationen und Metriken Ihrer Container und Cluster liefern. Wenn eine Anwendung ausfällt, stellt Kubernetes sie automatisch wieder her, indem es einen anderen Container mit minimaler Ausfallzeit und optimaler Nutzung der Systemressourcen dreht.

Effiziente Anpassung

Ohne Orchestrierungstools würde die Skalierung Ihrer Anwendungen zu einem zeitaufwändigen Prozess. Unternehmen können sich jetzt schnell an Marktanforderungen anpassen, indem sie je nach momentaner Arbeitslast Container hinzufügen oder entfernen. Beispielsweise können Online-Händler die Kapazität ihrer Anwendung bei erhöhter Nachfrage sofort erhöhen. In Zeiten geringerer Nachfrage können Administratoren die Anwendung schnell wieder herunterskalieren.

So starten Sie mit Kubernetes

Da es sich bei Kubernetes um ein System zum Einrichten und Koordinieren von Containern handelt, ist eine Containerization Engine Voraussetzung für die Nutzung .

Es gibt viele Containerlösungen, darunter Docker ist heute am beliebtesten. Andere Containeranbieter sind AWS, LXD ,Java-Container ,Hyper-V-Container und Windows Server-Container .

Abgesehen von Containern gibt es andere Projekte und Unterstützung, auf die sich Kubernetes verlässt, um seinen Benutzern das volle Erlebnis zu bieten. Einige davon sind:

  • Docker oder Atomic Registry (für die offizielle Registrierung)
  • Ansible (zur Automatisierung)
  • OpenvSwitch und intelligentes Edge-Routing (für Netzwerke)
  • LDAP, SELinux, RBAC und OAUTH mit mandantenfähigen Ebenen (für Kubernetes-Sicherheit)
  • Heapster, Kibana, Hawkular und Elastic (für Telemetrie)

Für Anfänger, die noch keine Erfahrung mit der Bereitstellung mehrerer Container haben, bietet Minikube ist ein guter Anfang. Minikube ist ein System zum lokalen Ausführen eines Clusters mit einem einzelnen Knoten und eignet sich hervorragend zum Erlernen der Grundlagen, bevor Sie zu Kubernetes übergehen.

Wenn Sie mehr über Ansible und Kubernetes erfahren möchten, lesen Sie unseren Artikel zu den Unterschieden zwischen Ansible und Kubernetes.


Ubuntu
  1. Was ist Helm? Helm und Helmkarten erklärt

  2. So richten Sie einen Kubernetes-Cluster mit Rancher ein

  3. Terraform vs. Kubernetes:Was sind die Unterschiede?

  4. Was ist CentOS – Ein Leitfaden für Anfänger

  5. Kubernetes-Cluster mit Rancher einrichten

Vollständiges Handbuch zur Linux-Protokollierung

Vollständiger Leitfaden für Anfänger zur Kubernetes-Cluster-Bereitstellung auf CentOS (und anderen Linux)

Eine vollständige Anleitung zur Installation von Tomcat unter Linux

Ubuntu Firewall UFW – Eine vollständige Anleitung

Linux-Verzeichnisbefehle:Eine vollständige Anleitung

Cronjob - Der vollständige Leitfaden für Cronjobs