AUF DIESER SEITE
Installieren von cRPD auf Kubernetes
Verwalten Sie Container, auf denen Anwendungen in Produktionsumgebungen ausgeführt werden. Stellen Sie sicher, dass es keine Ausfallzeiten gibt. Wenn beispielsweise ein Container ausfällt, muss ein anderer Container gestartet werden. Kubernetes bietet Ihnen ein Framework, um verteilte Systeme ausfallsicher zu betreiben. Kubernetes bietet eine Plattform für die Bereitstellung, Automatisierung, Skalierung und den Betrieb von Anwendungscontainern über Cluster von Host-Containern hinweg.
Voraussetzung
Installieren von Kubernetes auf einem Linux-System und Bereitstellen von Kubernetes auf einem Linux-Cluster mit zwei Knoten finden Sie unter Kubernetes-Installation.
Wenn Sie Kubernetes bereitstellen, erhalten Sie einen Cluster. Ein Kubernetes-Cluster besteht aus einer Reihe von Arbeitscomputern, sogenannten Knoten, auf denen containerisierte Anwendungen ausgeführt werden. Jeder Cluster verfügt über mindestens einen Workerknoten. Die Workerknoten hosten die Pods, die die Komponenten der Anwendung sind.
In diesem Abschnitt werden die Schritte zum Erstellen des cRPD-Docker-Images in Kubernetes beschrieben.
Installieren von Kubernetes
So installieren Sie Kubernetes:
Kubernetes-Cluster
Kubernetes koordiniert einen Cluster von Computern, die miteinander verbunden sind, um als eine Einheit zu arbeiten. Kubernetes automatisiert die Bereitstellung und Planung von cRPD in einem Cluster auf effiziente Weise.
Ein Kubernetes-Cluster besteht aus zwei Arten von Ressourcen:
-
Der primäre Server koordiniert den Cluster
-
Nodes sind die Worker, die Anwendungen ausführen
Der primäre Server ist für die Verwaltung des Clusters verantwortlich. Der primäre Server koordiniert alle Aktivitäten in Ihrem Cluster, z. B. das Planen von Anwendungen, das Beibehalten des gewünschten Zustands von Anwendungen, das Skalieren von Anwendungen und das Bereitstellen neuer Updates.
Ein Knoten ist eine VM oder ein physischer Computer, der als Arbeitscomputer in einem Kubernetes-Cluster dient. Jeder Knoten verfügt über ein Kubelet, einen Agenten für die Verwaltung des Knotens und die Kommunikation mit dem Kubernetes-Master. Der Knoten sollte auch über Tools zum Verarbeiten von Containervorgängen verfügen, z. B. Docker oder rkt. Ein Kubernetes-Cluster, der den Produktionsdatenverkehr verarbeitet, sollte über mindestens drei Knoten verfügen.
Wenn Sie cRPD auf Kubernetes bereitstellen, startet der primäre Server die Anwendungscontainer. Der primäre Server plant die Ausführung der Container auf den Knoten des Clusters. Die Knoten kommunizieren mit dem primären Knoten über die Kubernetes-API, die der primäre Knoten verfügbar macht. Endbenutzer können die Kubernetes-API auch direkt für die Interaktion mit dem Cluster verwenden.
Ein Pod läuft immer auf einem Node. Ein Node ist ein Workercomputer in Kubernetes und kann je nach Cluster entweder ein virtueller oder ein physischer Computer sein. Jeder Knoten wird vom primären Knoten verwaltet. Ein Knoten kann mehrere Pods haben, und der primäre Kubernetes-Knoten übernimmt automatisch die Planung der Pods für die Knoten im Cluster.
Auf jedem Kubernetes-Knoten wird mindestens Folgendes ausgeführt:
-
Kubelet, ein Prozess, der für die Kommunikation zwischen dem primären Kubernetes-Server und dem Node verantwortlich ist; Es verwaltet die Pods und Container, die auf einem Computer ausgeführt werden.
-
Eine Containerlaufzeit (wie Docker, rkt), die für das Abrufen des Containerimages aus einer Registrierung, das Entpacken des Containers und das Ausführen der Anwendung verantwortlich ist.
So erstellen Sie einen minikube-Cluster:
cRPD Docker-Image herunterladen
-
Stellen Sie vor dem Importieren der cRPD-Software sicher, dass Docker auf dem Linux-Host installiert ist und dass die Docker-Engine ausgeführt wird.
-
Stellen Sie sicher, dass Sie sich beim Juniper Support registrieren, bevor Sie die cRPD-Software herunterladen.
So laden Sie das Docker-Image herunter:
Erstellen eines cRPD-Pods mithilfe der Bereitstellung
Ein Kubernetes-Pod ist eine Gruppe aus einem oder mehreren Containern, die zu Verwaltungs- und Netzwerkzwecken miteinander verbunden sind. Ein Kubernetes-Deployment überprüft den Zustand Ihres Pods und startet den Container des Pods neu, wenn er beendet wird. Bereitstellungen sind die empfohlene Methode, um die Erstellung und Skalierung von Pods zu verwalten.
Wenn Sie einen gewünschten Zustand in einer Bereitstellung beschreiben und der Bereitstellungscontroller den tatsächlichen Zustand in den gewünschten Zustand ändert. Sie können Bereitstellungen verwenden, um neue ReplicaSets zu erstellen. Alternativ können Sie vorhandene Bereitstellungen entfernen und ihre Ressourcen mit neuen Bereitstellungen übernehmen.
Erstellen eines cRPD-Pods mit YAML
Ein Pod ist die grundlegende Ausführungseinheit einer Kubernetes-Anwendung – die kleinste und einfachste Einheit im Kubernetes-Objektmodell, die Sie erstellen oder bereitstellen. Ein Pod stellt eine Bereitstellungseinheit dar: eine einzelne Instanz einer Anwendung in Kubernetes, die entweder aus einem einzelnen Container oder einer kleinen Anzahl von Containern bestehen kann, die eng gekoppelt sind und sich Ressourcen teilen. Docker ist die gebräuchlichste Container-Runtime, die in einem Kubernetes-Pod verwendet wird.
Sie können direkt einen Pod erstellen oder indirekt einen Controller in Kubernetes verwenden. Ein Controller kann mehrere Pods erstellen und verwalten. Controller verwenden eine Pod-Vorlage, die Sie zum Erstellen der Pods bereitstellen. Pod-Vorlagen sind Pod-Spezifikationen, die in anderen Objekten enthalten sind, z. B. Replikationscontrollern, Aufträgen und DaemonSets.
So erstellen Sie den cRPD-Pod mithilfe der YAML-Datei
Jeder Pod ist für die Ausführung einer einzelnen Instanz einer bestimmten Anwendung vorgesehen. Wenn Sie Ihre Anwendung horizontal skalieren möchten (z. B. mehrere Instanzen ausführen), sollten Sie mehrere Pods verwenden, einen für jede Instanz. In Kubernetes wird dies allgemein als Replikation bezeichnet.
Siehe auch
Erstellen eines cRPD-Pods mithilfe einer Auftragsressource
Ein Auftrag erstellt einen oder mehrere Pods und wiederholt die Ausführung der Pods, bis eine bestimmte Anzahl von Pods erfolgreich beendet wurde. Wenn eine bestimmte Anzahl erfolgreicher Abschlüsse erreicht ist, ist die Aufgabe abgeschlossen. Sie können einen Auftrag auch verwenden, um mehrere Pods parallel auszuführen. Durch das Löschen eines Auftrags werden die von ihm erstellten Pods bereinigt. Durch das Anhalten eines Auftrags werden die aktiven Pods gelöscht, bis der Auftrag fortgesetzt wird. So erstellen Sie den cRPD-Pod mit der Datei crpd_job.yaml:
Erstellen eines cRPD-Pods mit DaemonSet
DaemonSet stellt sicher, dass alle (oder einige) Knoten eine Kopie eines Pods ausführen. Wenn Knoten zum Cluster hinzugefügt werden, werden ihnen Pods hinzugefügt. Wenn Knoten aus dem Cluster entfernt werden, werden diese Pods einer Garbage Collection unterzogen. Wenn das DaemonSet gelöscht wird, werden die erstellten Pods gelöscht.
Erstellen des cRPD-Pods mithilfe der Datei crpd_daemonset.yaml
Jeder Pod ist für die Ausführung einer einzelnen Instanz einer bestimmten Anwendung vorgesehen. Wenn Sie Ihre Anwendung horizontal skalieren möchten (z. B. mehrere Instanzen ausführen), sollten Sie mehrere Pods verwenden, einen für jede Instanz. In Kubernetes wird dies allgemein als Replikation bezeichnet.
Siehe auch
cRPD skalieren
Sie können mehrere Instanzen von cRPD basierend auf dem Bedarf erstellen, indem Sie den –replicas Parameter für den kubectl run Befehl verwenden. Deployment ist ein Objekt, das seine ReplicaSets besitzen und verwalten kann.
Wir sollten vor der Skalierung einen Pod haben.
So skalieren Sie auf:
So verringern Sie die Skalierung:
-
Führen Sie den folgenden Befehl aus, um den Dienst auf zwei Replikate herunterzuskalieren:
root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2deployment.apps/crpdref scaled
-
Führen Sie den folgenden Befehl aus, um die Bereitstellungen aufzulisten:
root@kubernetes-master:~# kubectl get deployments -
Führen Sie den folgenden Befehl aus, um die Anzahl der Pods aufzulisten. Sie können sehen, dass die beiden Pods beendet wurden:
root@kubernetes-master:~# kubectl get pods -o wide
Rollenaktualisierung der cRPD-Bereitstellung
Sie können Pod-Instanzen mit neuen Versionen aktualisieren. Fortlaufende Updates ermöglichen die Aktualisierung von Bereitstellungen ohne Ausfallzeiten, indem Pods-Instanzen inkrementell mit neuen aktualisiert werden. Die neuen Pods werden auf Knoten mit verfügbaren Ressourcen geplant. Rollback-Updates fördern eine Anwendung von einer Umgebung in eine andere mit kontinuierlicher Integration und kontinuierlicher Bereitstellung von Anwendungen ohne Ausfallzeiten. In Kubernetes werden Updates versioniert, und jedes Deployment-Update kann auf eine vorherige stabile Version zurückgesetzt werden.
So aktualisieren Sie die cRPD-Bereitstellung mit einem neuen Image und behalten die Konfiguration nach dem Update bei:
cRPD-Pod-Bereitstellung mit zugewiesenen Ressourcen
Pods bieten zwei Arten von gemeinsam genutzten Ressourcen, nämlich Netzwerk und Speicher für die Container. Wenn Container in einem Pod mit Entitäten außerhalb des Pods kommunizieren, müssen sie koordinieren, wie sie die freigegebenen Netzwerkressourcen (z. B. Ports) verwenden. Innerhalb eines Pods kommunizieren Container über localhost eine IP-Adresse und einen Port.
Container innerhalb des Pods zeigen den Systemhostnamen als identisch mit dem für den Pod konfigurierten name Namen an.
Jeder Container in einem Pod kann den privilegierten Modus aktivieren, indem er das privileged Flag in der Containerspezifikation verwendet. Dies ist nützlich für Container, die administrative Funktionen des Betriebssystems benötigen, wie z. B. die Manipulation des Netzwerkstapels oder den Zugriff auf Hardwaregeräte. Prozesse innerhalb eines privilegierten Containers verfügen über nahezu die gleichen Berechtigungen, die Prozessen außerhalb eines Containers zur Verfügung stehen.
So zeigen Sie die Pod-Bereitstellung mit Ressourcen an:
cRPD-Pod-Bereitstellung mit bereitgestelltem Volume
An emptyDir ist ein Volume-Typ, der in Kubernetes unterstützt wird. Er wird erstellt, wenn ein Pod einem Knoten zugewiesen wird, und existiert so lange, wie der Pod auf diesem Knoten ausgeführt wird. Wie der Name schon sagt, ist das emptyDir Volume zunächst leer. Alle Container im Pod können die gleichen Dateien auf dem emptyDir Volume lesen und schreiben, obwohl dieses Volume in jedem Container an denselben oder unterschiedlichen Pfaden gemountet werden kann. Wenn ein Pod aus irgendeinem Grund von einem Knoten entfernt wird, werden die Daten im emptyDir Knoten dauerhaft gelöscht.
So zeigen Sie die cRPD-Podbereitstellung durch Einbinden des Speicherpfads in Kubernetes an: