So richten Sie Bereitstellungen mit mehreren Knoten mit Rancher 2.1, Kubernetes und Docker Machine unter Ubuntu 18.04 ein

Der Autor hat Code Org ausgewählt, um eine Spende im Rahmen des Programms Write for DOnations zu erhalten.

Einführung

Rancher ist eine beliebte Open-Source-Plattform für die Containerverwaltung. Rancher 2.X wurde Anfang 2018 veröffentlicht und funktioniert unter Kubernetes. Außerdem wurden neue Tools wie Multi-Cluster-Management und integrierte CI-Pipelines integriert. Neben den verbesserten Tools für Sicherheit, Skalierbarkeit und einfache Bereitstellung in Kubernetes bietet Rancher eine grafische Benutzeroberfläche, die die Verwaltung von Containern vereinfacht. Über die grafische Benutzeroberfläche von Rancher können Benutzer Geheimnisse verwalten, Rollen und Berechtigungen sicher verwalten, Knoten und Pods skalieren und Load Balancer und Volumes einrichten, ohne ein Befehlszeilentool oder komplexe YAML-Dateien zu benötigen.

In diesem Lernprogramm stellen Sie einen Rancher 2.1-Server mit mehreren Knoten mithilfe von Docker Machine unter Ubuntu 18.04 bereit. Am Ende können Sie über die Rancher-Benutzeroberfläche neue DigitalOcean-Tröpfchen und -Container-Pods bereitstellen, um Ihre Hosting-Umgebung schnell zu vergrößern oder zu verkleinern.

Voraussetzungen

Bevor Sie dieses Lernprogramm starten, benötigen Sie unter ein DigitalOcean-Konto Folgendes:

Schritt 1 - Erstellen eines Droplets mit installiertem Docker

Um Rancher zu starten und zu konfigurieren, müssen Sie ein neues Droplet mit installiertem Docker erstellen. Um dies zu erreichen, können Sie das Docker-Image von DigitalOcean verwenden.

Melden Sie sich zunächst bei Ihrem DigitalOcean-Konto an und wählen Sie * Droplet erstellen *. Wählen Sie dann im Bereich "Bild auswählen" die Registerkarte "Marktplatz". Wählen Sie * Docker 18.06.1 ~ ce ~ 3 am 18.04 *.

image: https://assets.digitalocean.com/articles/multirancher_1804/step1a.png [Wählen Sie das Docker 18.06-Image aus dem One-Click-Apps-Menü]

Wählen Sie als Nächstes ein Droplet aus, das nicht kleiner als * 2 GB * ist, und wählen Sie eine Datencenter-Region für Ihr Droplet aus.

Fügen Sie schließlich Ihre SSH-Schlüssel hinzu, geben Sie einen Hostnamen für Ihr Droplet ein und klicken Sie auf die Schaltfläche * Erstellen *.

Es dauert einige Minuten, bis der Server das Gerät bereitgestellt und Docker heruntergeladen hat. Sobald das Droplet erfolgreich bereitgestellt wurde, können Sie Rancher in einem neuen Docker-Container starten.

Schritt 2 - Starten und Konfigurieren von Rancher

Mit dem in Schritt 1 erstellten Droplet wird Rancher in einem Docker-Container ausgeführt. In diesem Schritt starten Sie den Rancher-Container und stellen sicher, dass er über ein Lets Encrypt SSL-Zertifikat verfügt, damit Sie sicher auf das Rancher-Administratorfenster zugreifen können. Let’s Encrypt ist eine automatisierte Open-Source-Zertifizierungsstelle, mit der Entwickler neunzig Tage lang kostenlos SSL-Zertifikate bereitstellen können.

Loggen Sie sich in Ihr neues Droplet ein:

ssh root@

Geben Sie Folgendes ein, um sicherzustellen, dass Docker ausgeführt wird:

docker -v

Überprüfen Sie, ob die aufgeführte Docker-Version Ihren Erwartungen entspricht. Sie können Rancher mit einem Lets Encrypt-Zertifikat starten bereits installiert, indem Sie den folgenden Befehl ausführen:

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /host/rancher:/var/lib/rancher rancher/rancher --acme-domain

Mit der Option "+ - acme-domain " wird ein SSL-Zertifikat von Let's Encrypt installiert, um sicherzustellen, dass Ihr Rancher-Administrator über HTTPS bedient wird. Dieses Skript weist das Droplet außerdem an, die Datei https://hub.docker.com/r/rancher/rancher/ [` rancher / rancher ` Docker-Image] abzurufen und eine Rancher-Instanz in einem Container zu starten, die gegebenenfalls automatisch neu gestartet wird geht versehentlich runter. Um die Wiederherstellung bei Datenverlust zu vereinfachen, hängt das Skript ein Volume auf dem Hostcomputer ein (unter " / host / rancher +"), das die Rancher-Daten enthält.

Geben Sie Folgendes ein, um alle laufenden Container anzuzeigen:

docker ps

Es wird eine Ausgabe ähnlich der folgenden angezeigt (mit einer eindeutigen Container-ID und einem eindeutigen Namen):

OutputCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                      NAMES
       rancher/rancher     "entrypoint.sh"     12 seconds ago      Up 11 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp

Wenn der Container nicht ausgeführt wird, können Sie den Befehl + docker run + erneut ausführen.

Bevor Sie auf das Rancher-Administratorfenster zugreifen können, müssen Sie Ihr Administratorkennwort und die Rancher-Server-URL festlegen. Über die Rancher-Administrationsoberfläche können Sie auf alle laufenden Knoten, Pods und Geheimnisse zugreifen. Daher ist es wichtig, dass Sie ein sicheres Kennwort verwenden.

Gehen Sie in Ihrem Webbrowser zu dem Domain-Namen, der auf Ihr neues Droplet verweist. Wenn Sie diese Adresse zum ersten Mal besuchen, können Sie von Rancher ein Passwort festlegen:

image: https: //assets.digitalocean.com/articles/multirancher_1804/step3a.png [Legen Sie Ihr Rancher-Passwort über die Eingabeaufforderung fest.]

Wenn Sie nach Ihrer * Rancher-Server-URL * gefragt werden, verwenden Sie den Domainnamen, der auf Ihr Droplet zeigt.

Sie haben jetzt Ihr Rancher-Server-Setup abgeschlossen und sehen den Startbildschirm des Rancher-Administrators:

Bild: https://assets.digitalocean.com/articles/multirancher_1804/step3b.png [Der Startbildschirm des Rancher-Administrators]

Sie können nun mit der Einrichtung des Rancher-Clusters fortfahren.

Schritt 3 - Konfigurieren eines Clusters mit einem einzelnen Knoten

Um Rancher zu verwenden, müssen Sie einen Cluster mit mindestens einem Node erstellen. Ein Cluster ist eine Gruppe von einem oder mehreren Knoten. Dieses Handbuch enthält weitere Informationen zur Kubernetes-Architektur. In diesem Lernprogramm entsprechen die Knoten den Droplets, die Rancher verwalten wird. Pods stellen eine Gruppe ausgeführter Docker-Container innerhalb des Droplets dar. Jeder Knoten kann viele Pods ausführen. Mithilfe der Rancher-Benutzeroberfläche können Sie Cluster und Knoten in einer zugrunde liegenden Kubernetes-Umgebung einrichten.

Am Ende dieses Schritts haben Sie einen Cluster mit einem einzelnen Knoten eingerichtet, auf dem der erste Pod ausgeführt werden kann.

Klicken Sie in Rancher auf * Cluster hinzufügen * und wählen Sie * DigitalOcean * als * Infrastrukturanbieter * aus.

image: https://assets.digitalocean.com/articles/multirancher_1804/step4a.png [Wählen Sie DigitalOcean von den aufgelisteten Infrastrukturanbietern aus.]

Geben Sie einen * Clusternamen * ein und scrollen Sie nach unten zum Abschnitt * Node Pools *. Geben Sie ein * Namenspräfix * ein, belassen Sie die * Zählung * vorerst bei * 1 * und überprüfen Sie * etcd *, * Kontrollebene * und * Arbeiter *.

  • * https://kubernetes.io/docs/concepts/overview/components/#etcd [etcd] * ist Kubernetes wichtigstes Speichersystem, um den Zustand Ihrer gesamten Umgebung zu erhalten. Um eine hohe Verfügbarkeit aufrechtzuerhalten, sollten Sie drei oder fünf etcd-Knoten ausführen, damit Ihre Umgebung auch dann noch verwaltet werden kann, wenn einer ausfällt.

  • * https: //kubernetes.io/docs/concepts/#kubernetes-control-plane [Steuerungsebene] * Überprüft alle Kubernetes-Objekte - wie z. B. Pods - in Ihrer Umgebung und hält sie mit der von Ihnen angegebenen Konfiguration auf dem neuesten Stand in der Rancher Admin-Oberfläche.

  • * https://kubernetes.io/docs/concepts/architecture/nodes/ [Workers] * Führen Sie die tatsächlichen Workloads und Überwachungsagenten aus, um sicherzustellen, dass Ihre Container ausgeführt und vernetzt bleiben. Auf Worker-Knoten wird auf Ihren Pods die von Ihnen bereitgestellte Software ausgeführt.

image: https://assets.digitalocean.com/articles/multirancher_1804/step4b.png [Erstellen eines Knotenpools mit einem einzelnen Knoten]

Klicken Sie vor dem Erstellen des Clusters auf * Knotenvorlage hinzufügen *, um die spezifischen Optionen für Ihren neuen Knoten zu konfigurieren.

Geben Sie Ihr DigitalOcean Personal Access Token in das Eingabefeld * Access Token * ein und klicken Sie auf * Next: Configure Droplet *.

Wählen Sie als Nächstes dieselbe * Region * und * Tropfengröße * wie in Schritt 1 aus. Wählen Sie für * Image * unbedingt * Ubuntu 16.04.5 x64 * aus, da derzeit ein Kompatibilitätsproblem mit Rancher und Ubuntu 18.04 vorliegt. Drücken Sie * Erstellen *, um die Vorlage zu speichern.

Klicken Sie abschließend auf der Seite * Cluster hinzufügen * auf * Erstellen *, um den Bereitstellungsprozess zu starten. Es dauert einige Minuten, bis Rancher diesen Schritt ausgeführt hat. Anschließend wird in Ihrem DigitalOcean Droplets-Dashboard ein neues Droplet angezeigt.

In diesem Schritt haben Sie einen neuen Cluster und einen neuen Knoten erstellt, auf dem Sie im nächsten Abschnitt eine Workload bereitstellen.

Schritt 4 - Bereitstellen eines Webanwendungs-Workloads

Sobald der neue Cluster und der neue Knoten fertig sind, können Sie Ihren ersten Pod in einer Arbeitslast bereitstellen. Ein Kubernetes Pod ist die kleinste Arbeitseinheit, die Kubernetes und Rancher zur Verfügung steht. Workloads beschreiben eine einzelne Gruppe von Pods, die Sie zusammen bereitstellen. Beispielsweise können Sie mehrere Pods Ihres Webservers in einer einzigen Workload ausführen, um sicherzustellen, dass andere Instanzen eingehende Anforderungen verarbeiten können, wenn ein Pod mit einer bestimmten Anforderung langsamer wird. In diesem Abschnitt stellen Sie ein Nginx Hello World-Image auf einem einzelnen Pod bereit.

Bewegen Sie den Mauszeiger über * Global * in der Kopfzeile und wählen Sie * Standard *. Dadurch gelangen Sie zum * Default * -Projekt-Dashboard. In diesem Lernprogramm konzentrieren Sie sich auf die Bereitstellung eines einzelnen Projekts. Mit diesem Dashboard können Sie jedoch auch mehrere Projekte erstellen, um isolierte Container-Hosting-Umgebungen zu erzielen.

Klicken Sie auf "Bereitstellen", um mit der Konfiguration Ihres ersten Pods zu beginnen.

Geben Sie einen * Namen * ein und geben Sie + nginxdemos / hello + in das Feld * Docker Image * ein. Ordnen Sie als Nächstes den Port * 80 * im Container dem Port * 30000 * auf den Hostknoten zu. Dadurch wird sichergestellt, dass die von Ihnen bereitgestellten Pods auf jedem Knoten an Port 30000 verfügbar sind. Sie können * Protocol * auf * TCP * und das nächste Dropdown als * NodePort * setzen.

image: https://assets.digitalocean.com/articles/multirancher_1804/step5b.png [Das Eingabeformular zum Bereitstellen einer Workload]

Scrollen Sie zum Starten des Pods nach unten und klicken Sie auf "Starten".

Rancher bringt Sie zurück zur Standard-Projekt-Homepage und innerhalb weniger Sekunden ist Ihr Pod fertig. Klicken Sie auf den Link * 30000 / tcp * direkt unter dem Namen des Workloads. Rancher öffnet eine neue Registerkarte mit Informationen zur Umgebung des ausgeführten Containers.

image: https: //assets.digitalocean.com/articles/multirancher_1804/step5c.png [Serveradresse, Servername und andere Ausgabe des laufenden NGINX-Containers]

Die * Serveradresse * und der Port, die Sie auf dieser Seite sehen, sind die des internen Docker-Netzwerks und nicht die öffentliche IP-Adresse, die Sie in Ihrem Browser sehen. Dies bedeutet, dass Rancher arbeitet und den Datenverkehr erwartungsgemäß von "+ http: //: 30000 / +" an die Workload weiterleitet.

Zu diesem Zeitpunkt haben Sie Ihre erste Workload eines Pods erfolgreich auf einem einzelnen Rancher-Knoten bereitgestellt. Als Nächstes erfahren Sie, wie Sie Ihre Rancher-Umgebung skalieren.

Schritt 5 - Skalieren von Knoten und Pods

Mit Rancher können Sie Ihre Hosting-Ressourcen auf zwei Arten skalieren: durch Erhöhen der Anzahl der Pods in Ihrer Workload oder durch Erhöhen der Anzahl der Knoten in Ihrem Cluster.

Durch das Hinzufügen von Pods zu Ihrer Arbeitsauslastung werden in Ihrer Anwendung mehr Prozesse ausgeführt. Auf diese Weise wird mehr Datenverkehr verarbeitet und Bereitstellungen ohne Ausfallzeiten ermöglicht, aber jeder Knoten kann nur eine begrenzte Anzahl von Pods verarbeiten. Sobald alle Knoten das Pod-Limit erreicht haben, müssen Sie die Anzahl der Knoten erhöhen, um die Skalierung fortzusetzen.

Eine weitere Überlegung ist, dass das Erhöhen von Pods in der Regel kostenlos ist, Sie jedoch für jeden Knoten bezahlen müssen, den Sie zu Ihrer Umgebung hinzufügen. In diesem Schritt skalieren Sie sowohl Knoten als auch Pods und fügen Ihrem Rancher-Cluster einen weiteren Knoten hinzu.

Navigieren Sie zur Cluster-Homepage Ihrer Rancher-Installation, indem Sie in der oberen Navigationsleiste * Cluster: * auswählen. Klicken Sie anschließend in der oberen Navigationsleiste auf * Knoten *.

image: https://assets.digitalocean.com/articles/multirancher_1804/step6a.png [Wählen Sie Ihren Cluster in der oberen Navigationsleiste aus.]

Auf dieser Seite wird angezeigt, dass derzeit ein Knoten im Cluster ausgeführt wird. Um weitere Knoten hinzuzufügen, klicken Sie auf * Cluster bearbeiten * und navigieren Sie zum Abschnitt * Knotenpools * unten auf der Seite. Klicken Sie auf * Add Node Pool * (Knotenpool hinzufügen), geben Sie ein Präfix ein und aktivieren Sie das Kontrollkästchen * Worker * (Arbeiter). Klicken Sie auf * Speichern *, um den Cluster zu aktualisieren.

image: https: //assets.digitalocean.com/articles/multirancher_1804/step6b.png [Hinzufügen eines Knotenpools nur als Worker]

Innerhalb von 2 bis 5 Minuten stellt Rancher ein zweites Droplet bereit und gibt den Knoten im Cluster-Dashboard als "Aktiv" an. Dieser zweite Knoten ist nur ein Worker, das heißt, er führt die Container Rancher etcd oder Control Plane nicht aus. Dies ermöglicht dem Worker mehr Kapazität für die Ausführung von Workloads.

Wenn der zweite Knoten bereit ist, können Sie die im vorherigen Schritt bereitgestellte Workload auf diesem Knoten anzeigen, indem Sie in Ihrem Browser zu "+ http: //: 30000 / +" navigieren.

Durch das Skalieren von Knoten erhalten Sie mehr Droplets, auf die Sie Ihre Workloads verteilen können. Möglicherweise möchten Sie jedoch auch mehr Instanzen jedes Pods innerhalb einer Workload ausführen. Um weitere Pods hinzuzufügen, kehren Sie zur * Standard * -Projektseite zurück, drücken Sie auf den Pfeil links von Ihrem ++ Workload und klicken Sie zweimal auf * + *, um zwei weitere Pods hinzuzufügen.

image: https://assets.digitalocean.com/articles/multirancher_1804/step6c.png [Ausführen von drei Hello World-Pods in einer Workload]

Rancher stellt automatisch weitere Pods bereit und verteilt die ausgeführten Container an jeden Knoten, je nachdem, wo Verfügbarkeit besteht.

Sie können Ihre Knoten und Pods jetzt an die Anforderungen Ihrer Anwendung anpassen.

Fazit

Sie haben jetzt mit Rancher 2.1 unter Ubuntu 18.04 Bereitstellungen mit mehreren Knoten eingerichtet und auf zwei ausgeführte Knoten und mehrere Pods innerhalb einer Workload skaliert. Mit dieser Strategie können Sie jede Art von Docker-Container hosten und skalieren, die Sie in Ihrer Anwendung ausführen müssen. Mithilfe des Dashboards und der Warnungen von Rancher können Sie die Leistung Ihrer Workloads und Knoten in jedem Cluster maximieren.