Kubernetes-Tutorial für Einsteiger: Grundlagen, Funktionen, Architektur

Bevor wir mit diesem Kubernetes-Tutorial beginnen, lernen wir Folgendes:

Was ist Kubernetes?

Kubernetes ist ein Containerverwaltungssystem, das auf der Google-Plattform entwickelt wurde. Kubernetes hilft bei der Verwaltung von Containeranwendungen in verschiedenen Arten von physischen, virtuellen und Cloud-Umgebungen. Google Kubernetes ist ein äußerst flexibles Containertool zur konsistenten Bereitstellung komplexer Anwendungen, die auf Clustern mit Hunderten bis Tausenden einzelner Server ausgeführt werden.

Warum brauchen Sie Container?

Der Internetnutzer von heute akzeptiert keine Ausfallzeiten. Daher müssen Entwickler eine Methode finden, um Wartungs- und Aktualisierungsarbeiten durchzuführen, ohne ihre Dienste zu unterbrechen.

Daher Container, bei denen es sich um isolierte Umgebungen handelt. Es enthält alles, was für die Ausführung der Anwendung erforderlich ist. Es erleichtert Entwicklern das Bearbeiten und Bereitstellen von Apps. Darüber hinaus ist die Containerisierung zu einer bevorzugten Methode zum Packen, Bereitstellen und Aktualisieren von Web-Apps geworden.

Welche Aufgabe übernimmt Kubernetes?

Kubernetes ist der Linux-Kernel, der für verteilte Systeme verwendet wird. Es hilft Ihnen, die zugrunde liegende Hardware der Knoten (Server) zu abstrahieren und bietet eine konsistente Schnittstelle für Anwendungen, die den gemeinsam genutzten Ressourcenpool verbrauchen.

Warum Kubernetes verwenden?

Kubernetes hilft Ihnen, die Ressourcenzuteilung und das Verkehrsmanagement für Cloud-Anwendungen und Microservices zu steuern. Es trägt auch dazu bei, verschiedene Aspekte serviceorientierter Infrastrukturen zu vereinfachen. Mit Kubernetes können Sie sicherstellen, wo und wann Containeranwendungen ausgeführt werden, und hilft Ihnen, Ressourcen und Tools zu finden, mit denen Sie arbeiten möchten.

Eigenschaften von Kubernetes

Hier sind die wesentlichen Kubernetes-Funktionen:

  • Automatisierte Planung
  • Selbstheilungskräfte
  • Automatisierte Rollouts und Rollbacks
  • Horizontale Skalierung und Lastverteilung
  • Bietet Umgebungskonsistenz für Entwicklung, Tests und Produktion
  • Die Infrastruktur ist lose gekoppelt, sodass jede Komponente als separate Einheit fungieren kann
  • Bietet eine höhere Dichte der Ressourcennutzung
  • Bietet unternehmenstaugliche Funktionen
  • Anwendungszentriertes Management
  • Automatisch skalierbare Infrastruktur
  • Sie können eine vorhersehbare Infrastruktur schaffen

Kubernetes-Grundlagen

In diesem Kubernetes-Tutorial lernen wir nun einige wichtige Grundlagen von Kubernetes:

  • Cluster

    Es handelt sich um eine Sammlung von Hosts (Servern), mit deren Hilfe Sie deren verfügbare Ressourcen zusammenfassen können. Dazu gehören RAM, CPU, RAM, Festplatte und ihre Geräte in einem nutzbaren Pool.

  • Master

    Der Master ist eine Sammlung von Komponenten, die das Kontrollpanel von Kubernetes bilden. Diese Komponenten werden für alle Clusterentscheidungen verwendet. Dazu gehört sowohl die Planung als auch die Reaktion auf Clusterereignisse.

  • Knoten

    Es handelt sich um einen einzelnen Host, der auf einem physischen oder physischen Server ausgeführt werden kann virtuellen Maschine. Ein Knoten sollte sowohl Kube-Proxy, Minikube als auch Kubelet ausführen, die als Teil des Clusters betrachtet werden.

  • Namespace

    Es handelt sich um einen logischen Cluster oder eine logische Umgebung. Es handelt sich um eine weit verbreitete Methode, die zum Einschränken des Zugriffs oder zum Aufteilen eines Clusters verwendet wird.

Kubernetes Architektur

Nachfolgend finden Sie ein detailliertes Diagramm der Kubernetes-Architektur:

Kubernetes ArchiStrukturdiagramm
Kubernetes ArchiStrukturdiagramm

Hauptknoten

Der Masterknoten ist die erste und wichtigste Komponente, die für die Verwaltung des Kubernetes-Clusters verantwortlich ist. Er ist der Einstiegspunkt für alle Arten von Verwaltungsaufgaben. Es kann mehr als einen Masterknoten im Cluster geben, um die Fehlertoleranz zu überprüfen.

Der Masterknoten verfügt über verschiedene Komponenten wie API Server, Controller Manager, Scheduler und ETCD. Sehen wir uns alle an.

API-Server: Der API-Server fungiert als Einstiegspunkt für alle REST-Befehle, die zur Steuerung des Clusters verwendet werden.

Scheduler

Der Scheduler plant die Aufgaben für den Slave-Knoten. Es speichert die Ressourcennutzungsinformationen für jeden Slave-Knoten. Es ist für die Verteilung der Arbeitslast verantwortlich.

Es hilft Ihnen auch dabei, zu verfolgen, wie die Arbeitslast auf Clusterknoten verwendet wird. Es hilft Ihnen, die Arbeitslast auf Ressourcen zu verteilen, die verfügbar sind und die Arbeitslast akzeptieren.

usw

etcd-Komponenten speichern Konfigurationsdetails und Wright-Werte. Es kommuniziert mit den meisten Komponenten, um Befehle zu empfangen und zu arbeiten. Es verwaltet außerdem Netzwerkregeln und Portweiterleitungsaktivitäten.

Worker/Slave-Knoten

Worker-Knoten sind eine weitere wesentliche Komponente, die alle erforderlichen Dienste enthält, um die Vernetzung zwischen den Containern zu verwalten und mit dem Master-Knoten zu kommunizieren, wodurch Sie den geplanten Containern Ressourcen zuweisen können.

  • Kubelet: holt sich die Konfiguration eines Pods vom API-Server und stellt sicher, dass die beschriebenen Container betriebsbereit sind.
  • Docker-Container: Docker Der Container wird auf jedem Worker-Knoten ausgeführt, der die konfigurierten Pods ausführt
  • Kube-Proxy: Kube-Proxy fungiert als Load Balancer und Netzwerk-Proxy, um Dienste auf einem einzelnen Worker-Knoten auszuführen
  • Pods: Ein Pod ist eine Kombination aus einzelnen oder mehreren Containern, die logisch zusammen auf Knoten laufen

Andere wichtige Terminologien

Replikationscontroller

Ein Replikationscontroller ist ein Objekt, das eine Pod-Vorlage definiert. Es steuert auch Parameter zum horizontalen Skalieren identischer Pod-Replikate durch Erhöhen oder Verringern der Anzahl laufender Kopien.

Replikationssätze

Replikationssätze sind eine Interaktion mit dem Design des Replikationscontrollers und bieten Flexibilität bei der Art und Weise, wie der Controller die Pods erkennt, die er verwalten soll. Es ersetzt Replikationscontroller aufgrund ihrer höheren Replikationsauswahlfähigkeit.

Deployments

Die Bereitstellung ist eine allgemeine Arbeitslast, die direkt erstellt und verwaltet werden kann. Die Bereitstellung verwendet den Replikationssatz als Baustein, der die Funktion des Lebenszyklusmanagements hinzufügt.

Zustandsbehaftete Mengen

Es handelt sich um eine spezielle Pod-Steuerung, die Ordnung und Einzigartigkeit bietet. Es wird hauptsächlich verwendet, um eine feinkörnige Kontrolle zu haben, die Sie insbesondere in Bezug auf die Bereitstellungsreihenfolge, ein stabiles Netzwerk und persistente Daten benötigen.

Daemon-Sets

Daemon-Sets sind eine weitere spezielle Form von Pod-Controllern, die auf jedem Knoten im Cluster eine Kopie eines Pods ausführen. Diese Art von Pod-Controller ist eine effektive Methode zum Bereitstellen von Pods, mit der Sie Wartungsarbeiten durchführen können und die Dienste für die Knoten selbst bietet.

Kubernetes vs. Docker Swarm

Hier sind wichtige Unterschiede zwischen Kubernetes gegen Docker.

Parameter Hafenschwarm Kubernetes
Skalierung Keine automatische Skalierung Automatische Skalierung
Lastverteilung Führt einen automatischen Lastausgleich durch Konfigurieren Sie Ihre Lastausgleichseinstellungen manuell
Gemeinsame Nutzung des Speichervolumens Teilt Speichervolumes mit jedem anderen Container Teilt Speichervolumina zwischen mehreren Containern innerhalb desselben Pods
Verwendung des Anmelde- und Überwachungstools Verwenden 3rd Party-Tool wie ELK Stellen Sie ein integriertes Tool zur Protokollierung und Überwachung bereit.
Installation Einfach und schnell Kompliziert und zeitaufwändig
GUI GUI nicht verfügbar GUI ist verfügbar
Skalierbarkeit Die Skalierung ist schneller als bei K8S, aber die Clusterstärke ist nicht so robust Die Skalierung ist im Vergleich zu Swarm langsam, garantiert aber einen stärkeren Clusterzustand. Das Lastenausgleich erfordert eine manuelle Dienstkonfiguration.
Load Balancing Bietet eine integrierte Lastausgleichstechnik Prozessplanung zur Aufrechterhaltung von Diensten während der Aktualisierung
Updates und Rollbacks, Protokollierung und Überwachung von Datenvolumina Progressive Updates und Überwachung des Servicezustands. Wird nur mit Containern im selben Pod geteilt. Integrierte Protokollierungs- und Überwachungstools.

Vorteile von Kubernetes

  • Einfache Serviceorganisation mit Pods
  • Es wurde von Google entwickelt, das jahrelange wertvolle Branchenerfahrung mitbringt
  • Größte Community unter den Container-Orchestrierungstools
  • Bietet eine Vielzahl von Speicheroptionen, einschließlich lokaler Speicher, SANs und öffentlicher Clouds
  • Hält sich an die Prinzipien der unveränderlichen Infrastruktur
  • Kubernetes kann lokale Bare-Metal-, OpenStack- und öffentliche Clouds ausführen Google, Azure, AWS, usw.
  • Hilft Ihnen, Probleme mit Anbietersperren zu vermeiden, da alle herstellerspezifischen APIs oder Dienste verwendet werden können, außer wenn Kubernetes eine Abstraktion bereitstellt, z. B. Load Balancer und Speicher.
  • Durch die Containerisierung mithilfe von Kubernetes kann Paketsoftware diese Ziele erreichen. Es ermöglicht Anwendungen, die ohne Ausfallzeiten veröffentlicht und aktualisiert werden müssen.
  • Mit Kubernetes können Sie sicherstellen, dass diese Containeranwendungen ausgeführt werden, wo und wann Sie möchten, und hilft Ihnen dabei, Ressourcen und Tools zu finden, mit denen Sie arbeiten möchten.

Nachteile von Kubernetes

  • Das Kubenetes-Dashboard ist nicht so nützlich, wie es sein sollte
  • Kubernetes ist etwas kompliziert und unnötig in Umgebungen, in denen die gesamte Entwicklung lokal erfolgt.
  • Die Sicherheit ist nicht sehr effektiv.

Zusammenfassung

  • Container hilft einem Unternehmen, Wartungs- und Aktualisierungsarbeiten durchzuführen, ohne die Dienste zu unterbrechen
  • Kubernetes ist ein Beispiel für ein Container-Management-System, das auf der Google-Plattform entwickelt wurde.
  • Der größte Vorteil der Verwendung von Kubernetes besteht darin, dass es OpenStack vor Ort, öffentliche Clouds von Google, Azure, AWS usw.
  • Kubernetes bietet automatisierte Planungs- und Selbstheilungsfunktionen.
  • Cluster, Master, Knoten und Namespace sind wichtige Grundlagen von Kubernetes
  • Masterknoten und Arbeitsknoten sind wichtige Komponenten der Kubernetes-Architektur.
  • Replikationscontroller, Replikationssätze, Bereitstellungen, Stateful Sets und Daemon Sets sind weitere wichtige Begriffe, die in Kubernetes verwendet werden.
  • Docker Swarm erlaubt keine automatische Skalierung, während Kubernetes eine automatische Skalierung zulässt.
  • Der größte Nachteil von Kubenetes besteht darin, dass das Dashboard nicht sehr nützlich und effektiv ist