Einführung in Kubernetes (k8s)

Einführung in Kubernetes (k8s)

Ich wollte schon immer Kubernetes lernen, weil es interessant klang (und als Grieche fänden Sie den Namen problematisch), aber ich hatte nie die Gelegenheit dazu, weil ich nichts in einem Cluster laufen hatte. Vor Kurzem habe ich begonnen, mich bei der Arbeit mit Kubernetes-bezogenen Themen zu befassen und habe die Gelegenheit genutzt, um Informationen nachzuschlagen. Dann habe ich jedoch festgestellt, dass alle aktuellen Informationen (einschließlich offizieller Tutorials) zu langwierig und unangemessen waren, was mich zunächst ein wenig frustrierte.

Nach einigen Tagen der Recherche begann ich nach und nach die Kernkonzepte von Kubernetes zu verstehen und konnte es in einer Produktionsumgebung einsetzen. Da in meinem Lebenslauf nun stand, dass ich ein „Kubernetes-Experte“ sei, kam mir sofort eine Idee: Warum sollte ich mein umfassendes Verständnis des Systems und das Wissen, das ich mir in stundenlanger Recherche angeeignet hatte, nicht mehr Leuten zugänglich machen? Obwohl ich mich nicht davon überzeugen konnte, nicht noch einen weiteren wirren Artikel zu schreiben, wurde mir bald klar:
Dies ist dieser Artikel.

Das Hauptproblem, das ich mit den vorhandenen Artikeln hatte, bestand darin, dass ich keinen Artikel finden konnte, der einen umfassenden Überblick darüber gab, was diese Komponenten sind und wie sie zusammenpassen, bevor er in die Einzelheiten eintauchte. Diese anspruchsvolle Präsentationsmethode ist für mich die beste Art zu lernen. Ich habe es so geschrieben und hoffe, dass es auch für Sie funktioniert. Wenn Sie Expertenartikel/Tutorials kennen, in denen die Funktionsweise von Kubernetes auf leicht verständliche Weise beschrieben wird, erzählen Sie es mir bitte nicht, denn Sie waren da, als ich Sie brauchte, und jetzt habe ich meinen Artikel geschrieben und Sie haben ihn nicht früher herausgebracht.

Bedenken Sie auch, dass ich mich erst seit etwa einer Woche wirklich mit Kubernetes beschäftige. Dies wird also nicht super ausführlich sein und einiges davon könnte ungenau sein, aber hoffentlich sind keine Fehler enthalten und die Informationen hier sollten ausreichen, um Sie an den Punkt zu bringen, an dem Sie einen einfachen Cluster ausführen können.

Dennoch fand ich die Konzepte von Kubernetes letztlich ziemlich einfach, auch wenn es sicher noch vieles gibt, was ich nicht weiß. Meine Kenntnisse reichten jedoch aus, um einen Cluster einzurichten und unsere App darauf zum Laufen zu bringen, und ich bin ziemlich sicher, dass sie den meisten Leuten als Grundlage für die ersten Schritte genügen.

Grundlegende Konzepte

Als erstes müssen wir uns die verschiedenen Teile von Kubernetes im Detail ansehen:

  • Kontrollebene: Wie der Name schon sagt, ist dies der Teil, der alles andere steuert, und das ist auch der Teil, von dem ich nichts weiß, weil wir Amazon einfach dafür bezahlen, das für uns zu erledigen. Meines Erachtens ist dies die beste Entscheidung. Sofern Sie nicht Google sind, sollten Sie ein Unternehmen dafür bezahlen, dies für Sie zu verwalten.
  • Knoten: Ein Knoten ist im Wesentlichen ein Server, genau wie ein physischer Arbeiter, für den Sie bezahlen. Hier wird der gesamte Code bereitgestellt. Um aus einem einfachen Server einen Knoten zu machen, müssen Sie Docker, Kubelet, Kube-Proxy und einige andere Dinge darauf installieren. Dieser Artikel geht davon aus, dass Sie bereits einige Worker in Ihrem Cluster haben.
  • Pod: Ein Pod ist eine Sammlung von Containern. Hier befindet sich Ihr Code. Normalerweise haben Sie einen Pod pro Container, obwohl Sie möglicherweise einige eng verwandte Dienste im selben Pod unterbringen möchten. Ein Pod wird auf einem einzelnen Knoten ausgeführt (ein Knoten kann jedoch mehrere Pods ausführen). Dies bedeutet, dass alle Container in einem Pod dieselbe IP-Adresse haben und miteinander kommunizieren können, indem sie sich mit den Ports des jeweils anderen auf dem lokalen Host verbinden. Pods können nach ihrer Bereitstellung nicht aktualisiert, sondern nur gelöscht oder ersetzt werden.
  • Bereitstellungen: Mit einer Bereitstellung stellen Sie Ihre Pods tatsächlich in Ihrem Cluster bereit. Sie können einen Pod ohne Bereitstellung ausführen, aber ohne Bereitstellung können Sie nicht einfach die gewünschte Anzahl an Replikaten angeben, den Pod bei einem Fehler automatisch erneut bereitstellen, zu einem früheren Zustand zurückkehren usw. Bereitstellungen vereinfachen die Verwaltung des Code-Lebenszyklus und Sie können sie verwenden, um Docker-Images auf Kubernetes auszuführen.
  • Dienst: Dienste ermöglichen Ihnen, Ports von einem Pod zu anderen Pods zu öffnen und den DNS-Namen eines Pods anzugeben, um andere Pods im Cluster finden und eine Verbindung zu ihnen herstellen zu können.
  • Ingress: Mit Ingresses teilen Sie Ihrem Ingress-Controller (normalerweise einem Webserver wie Traefik) mit, was der Außenwelt zugänglich gemacht werden soll und über welchen Pfad oder Hostnamen. Der Ingress wird dem Pod zugeordnet, der die Anfrage tatsächlich beantwortet. Dieses Tutorial setzt außerdem voraus, dass Sie bereits einen Ingress konfiguriert haben, obwohl die Einrichtung von Traefik hierfür nicht sehr schwierig sein sollte (verwenden Sie beim Befolgen des Tutorials bitte den Bereitstellungsansatz).

Alle diese Elemente können mit kubectl über die Befehlszeile oder sicherer über eine YAML-Datei erstellt werden, die die Definition und Details dessen enthält, was Sie bereitstellen möchten (führen Sie dann kubectl apply -f <yaml file> aus).

Auf einer hohen Ebene platzieren Sie Container in Pods, die von einer Bereitstellung erstellt und bereitgestellt werden, deren Vernetzung von einem Dienst übernommen wird, und Sie fügen einen Ingress hinzu, damit die Außenwelt auf Ihren Server zugreifen kann.

Lassen Sie uns diese Abschnitte einzeln durchgehen und sehen, wie ihre YAML-Konfiguration aussieht.

Die Kapsel

Werfen wir einen Blick auf die YAML-Konfiguration für einen Pod, der ein Redis-Image in einem Container ausführt. Denken Sie daran, dass ein Pod nicht dauerhaft ist und Sie ihn daher fast nie direkt verwenden werden. Stattdessen stellen Sie Pods indirekt mithilfe einer Bereitstellung bereit, die wir als Nächstes behandeln.

Die folgenden Konfigurationsbeispiele dienen ausschließlich Ihrer Modifikation. Man muss es sich nur ansehen und dann weiterlesen, ohne anzuhalten, um seine Schönheit zu bewundern.

Wie Sie sehen, ist es ganz einfach: Sie fügen eine Reihe von Kubernetes-spezifischen Dingen hinzu, die Sie alle einfach kopieren und einfügen. Dann erklären Sie, dass diese Konfiguration für einen Pod ist, geben ihm einen Namen, geben die Container an, die darin ausgeführt werden, und die Ports, auf denen sie lauschen, löschen die gesamte Datei, und schon sind Sie fertig!

Weitere Informationen zu Pods finden Sie in der offiziellen Kubernetes-Dokumentation.

Der Einsatz

So führen Sie den oben genannten Pod mithilfe einer Bereitstellung tatsächlich aus. Denken Sie daran, dass Sie auf die obige Pod-Konfiguration überhaupt nicht achten müssen, wir werden sie bei der Bereitstellung neu definieren.

Sie werden feststellen, dass dies größtenteils die Pod-Konfiguration von oben ist, aber mit einigen zusätzlichen Konfigurationen wie Replikaten usw. Diese definieren den Namen der Bereitstellung und die Anzahl der Replikate, die wir bereitstellen möchten. Durch Ändern der Anzahl der Replikate werden mehr im Vorlagenabschnitt angegebene Pods bereitgestellt.

Weitere Informationen zu Bereitstellungen finden Sie in der offiziellen Kubernetes-Dokumentation.

Der Service

Nachdem wir nun einen Pod bereitgestellt haben, müssen wir seine Ports dem Rest des Clusters zugänglich machen. Die Direktive „containerPort“ in einer Bereitstellung stellt den Docker-Port bereit, leitet den Port jedoch nicht tatsächlich an den Host weiter, sodass mehrere Pods (keine Container im selben Pod) denselben Port ohne Konflikte verwenden können.

Um den oben genannten Port tatsächlich anderen Pods zugänglich zu machen, die im Cluster ausgeführt werden, müssen wir einen Dienst dafür erstellen. Dadurch werden die zum Weiterleiten des Ports erforderlichen Regeln erstellt und wir erhalten einen DNS-Eintrag, mit dem wir die IP für diesen Pod auflösen können.

Dadurch wird der Redis-Port anderen Pods im Cluster zugänglich gemacht, die über my-service:6379 eine Verbindung damit herstellen können.

Um weitere Teile Ihrer Anwendung bereitzustellen, fügen Sie dem Cluster einfach eine weitere Bereitstellung und den zugehörigen Dienst hinzu. Sie können Ihren Hauptanwendungsdienst auf genau dieselbe Weise wie oben Redis bereitstellen.

Der Ingress

Schließlich können wir unseren Dienst mithilfe von Ingress dem Internet zugänglich machen. Hier ist ein Beispiel mit Traefik. Auch wenn Sie Redis vielleicht nicht der Außenwelt zugänglich machen möchten, gilt der gleiche Ansatz für Ihre eigenen Anwendungen.

Dieser Konfigurationsabschnitt teilt Traefik mit, dass der gesamte Datenverkehr auf dem Host mit dem Namen redis.yourdomain.com an meinen Service-Port 6379 weitergeleitet werden soll. Soweit ich weiß, ist dies nur eine Konfiguration für Traefik. Nach dem Anwenden der Konfiguration wird der Pod über Traefik auf redis.yourdomain.com dem Internet zugänglich gemacht.

Ich hoffe, dieser Artikel war für Anfänger hilfreich. Dieser Beitrag war kurz, da die Grundlagen von Kubernetes kurz sind, aber wir haben es geschafft, mit minimalem Aufwand darzulegen, wie der Dienst ausgeführt werden kann.

Jetzt sollten Sie verstehen, was Kubernetes ist!

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • So stellen Sie eine Single-Node-Redis-Datenbank in einer Kubernetes-Umgebung bereit
  • Aufbau einer Docker+K8S-Clusterumgebung und verteilte Anwendungsbereitstellung
  • Schritte zum Bereitstellen eines Django-Projekts mit k8s
  • Implementierung der K8s-Bereitstellung eines Java-Projekts
  • Docker-Lernhinweise zur K8S-Bereitstellungsmethode
  • Bereitstellungs- und Konfigurationsprozess der K8S-Basisumgebung auf Produktionsebene

<<:  So installieren Sie MySQL 5.7.17 und stellen die Kodierung in Windows auf UTF-8 ein

>>:  WebStorm kann die Lösung der Vue3-kombinierten API nicht korrekt identifizieren

Artikel empfehlen

So erstellen Sie PHP7 mit einem benutzerdefinierten Docker-Image

Führen Sie zunächst eine einfache Docker-Installa...

So implementieren Sie das MySQL-Umschalten des Datenspeicherverzeichnisses

So implementieren Sie das MySQL-Umschalten des Da...

IE8 verwendet den Multikompatibilitätsmodus, um Webseiten normal anzuzeigen

IE8 wird mehrere Kompatibilitätsmodi haben. Der IE...

Einführung in häufig verwendete MySQL-Befehle in der Linux-Umgebung

Geben Sie den MySQL-Befehl ein: mysql -u+(Benutze...

JS verwendet die Methode „reduce()“, um Baumstrukturdaten zu verarbeiten

Inhaltsverzeichnis Definition Grammatik Beispiele...

HTML-Tabellen-Tag-Tutorial (7): Hintergrundfarbattribut BGCOLOR

Die Hintergrundfarbe der Tabelle kann über das At...

Erste Erfahrungen mit der Texterstellung mit Javascript Three.js

Inhaltsverzeichnis Wirkung Beginnen Sie mit der T...

Lassen Sie uns ausführlich über Vues Mixin und Vererbung sprechen

Inhaltsverzeichnis Vorwort Mischen Mixin-Hinweis ...

Beispielcode zur Implementierung eines reinen CSS-Popup-Menüs mit Transform

Vorwort Wenn Sie ein Topmenü erstellen, müssen Si...

Analyse der Anweisungsausführungsreihenfolge von SQL und MySQL

Ich bin heute auf ein Problem gestoßen: Kann ich ...

Detaillierte Erläuterung des Lese-Commits der MySQL-Transaktionsisolationsebene

MySQL-Transaktionsisolationsebene anzeigen mysql&...

Online- und Offlineinstallation von Docker und allgemeine Befehlsvorgänge

1. Testumgebung Name Version centos 7.6 Docker 18...

So verwenden Sie @media in mobilen adaptiven Stilen

Allgemeiner Handy-Stil: @media alle und (Ausricht...