AUF DIESER SEITE
Installation von cRPD auf Kubernetes
Kubernetes ist eine Open-Source-Plattform für die Verwaltung containerisierter Workloads und Services. Container sind eine gute Möglichkeit, die Anwendungen zu bündeln und auszuführen. In einer Produktionsumgebung müssen Sie die Container verwalten, in denen die Anwendungen ausgeführt werden, und sicherstellen, dass es keine Ausfallzeiten gibt. Wenn beispielsweise ein Container ausfällt, muss ein anderer Container gestartet werden. Kubernetes bietet Ihnen ein Framework für den ausfallsicheren Betrieb verteilter Systeme. Kubernetes bietet eine Plattform für die Automatisierung, Skalierung und den Betrieb von Anwendungscontainern in Clustern von Host-Containern.
Voraussetzung
Installieren Sie Kubernetes auf dem Linux-System und zur Bereitstellung von Kubernetes auf einem Linux-Cluster mit zwei Knoten, siehe Kubernetes-Installation.
Wenn Sie Kubernetes bereitstellen, erhalten Sie einen Cluster. Ein Kubernetes-Cluster besteht aus einer Reihe von Worker-Maschinen, sogenannten Nodes, auf denen containerisierte Anwendungen ausgeführt werden. Jeder Cluster verfügt über mindestens einen Mitarbeiterknoten. Die Worker-Knoten hosten die Pods, die die Komponenten der Anwendung sind.
In diesem Abschnitt werden die Schritte zum Erstellen des cRPD Docker-Images auf Kubernetes beschrieben.
Installation von Kubernetes
So installieren Sie Kubernetes:
Kubernetes-Cluster
Kubernetes koordiniert eine Cluster von Computern, die verbunden sind, um als einzelne 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 Primary koordiniert den Cluster
Knoten sind die Arbeiter, die Anwendungen ausführen
Der Primary ist für die Verwaltung des Clusters verantwortlich. Der Primäre koordiniert alle Aktivitäten in Ihrem Cluster, z. B. die Planung von Anwendungen, die Aufrechterhaltung des gewünschten Anwendungsstatus, die Skalierung von Anwendungen und die Einführung neuer Updates.
Ein Knoten ist eine VM oder ein physischer Computer, der als Arbeitermaschine in einem Kubernetes-Cluster dient. Jeder Knoten verfügt über einen Kubelet, ein Agent für die Verwaltung des Knotens und die Kommunikation mit dem Kubernetes-Master. Der Knoten sollte auch Über Tools für die Handhabung von Container-Vorgängen wie Docker oder rkt verfügen. Ein Kubernetes-Cluster, der den Produktionsdatenverkehr verarbeitet, sollte mindestens drei Knoten haben.
Wenn Sie cRPD auf Kubernetes bereitstellen, startet der Primäre die Anwendungscontainer. Der Primäre plant die Ausführung der Container auf den Knoten des Clusters. Die Knoten kommunizieren mit dem primären über die Kubernetes-API, die der primäre verfügbar macht. Endbenutzer können auch die Kubernetes-API direkt verwenden, um mit dem Cluster zu interagieren.
Ein Pod wird immer auf einem Node ausgeführt. Ein Node ist eine Arbeitermaschine in Kubernetes und kann je nach Cluster entweder eine virtuelle oder eine physische Maschine sein. Jeder Knoten wird durch den Primären verwaltet. Ein Node kann mehrere Pods haben, und der Kubernetes-Master übernimmt automatisch die Planung der Pods über die Knoten im Cluster hinweg.
Jeder Kubernetes-Knoten läuft mindestens:
Kubelet, ein Prozess, der für die Kommunikation zwischen dem Kubernetes-Master und dem Node verantwortlich ist; es verwaltet die Pods und die Container, die auf einem Computer ausgeführt werden.
Eine Container-Laufzeitumgebung (wie Docker, rkt), die dafür verantwortlich ist, das Container-Image aus einer Registrierung zu ziehen, den Container zu entpacken und die Anwendung auszuführen.
So erstellen Sie Minikube-Cluster:
Bild: cRPD Docker herunterladen
-
Stellen Sie vor dem Importieren der cRPD-Software sicher, dass Docker auf dem Linux-Host installiert ist und die Docker-Engine ausgeführt wird.
-
Registrieren Sie sich beim Juniper Support , bevor Sie die cRPD-Software herunterladen.
So laden Sie das Docker-Bild herunter:
Erstellen eines cRPD-Pods mit Bereitstellung
Ein Kubernetes-Pod ist eine Gruppe von einem oder mehreren Containern, die zu Verwaltungs- und Netzwerkzwecken miteinander verbunden sind. Eine Kubernetes-Bereitstellung überprüft den Zustand Ihres Pods und startet den Pod-Container neu, wenn er beendet wird. Bereitstellungen sind die empfohlene Methode zur Verwaltung der Erstellung und Skalierung von Pods.
Wenn Sie einen gewünschten Status in einer Bereitstellung beschreiben und der Bereitstellungscontroller den tatsächlichen Zustand in den gewünschten Zustand ändert. Sie können Bereitstellungen definieren, um neue ReplicaSets zu erstellen oder vorhandene Bereitstellungen zu entfernen und alle ihre Ressourcen mit neuen Bereitstellungen zu übernehmen.
Erstellen eines cRPD-Pods mit YAML
Ein Pod ist die grundlegende Ausführungseinheit einer Kubernetes-Anwendung – der kleinsten und einfachsten Einheit im Kubernetes-Objektmodell, das 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 ressourcen gemeinsam genutzt werden. Docker ist die gebräuchlichste Container-Laufzeitumgebung, die in einem Kubernetes-Pod verwendet wird.
Sie können direkt einen Pod oder indirekt mit einem Controller in Kubernetes erstellen. Ein Controller kann mehrere Pods erstellen und verwalten. Controller verwenden eine Pod-Vorlage, die Sie zum Erstellen der Pods bereitstellen. Podvorlagen sind Pod-Spezifikationen, die in anderen Objekten enthalten sind, z. B. Replikationscontroller, Jobs und DaemonSets.
So erstellen Sie den cRPD-Pod mithilfe der YAML-Datei
Jeder Pod ist dazu bestimmt, eine einzelne Instanz einer bestimmten Anwendung auszuführen. Wenn Sie Ihre Anwendung horizontal skalieren möchten (z. B. mehrere Instanzen ausführen), sollten Sie mehrere Pods für jede Instanz verwenden. In Kubernetes wird dies allgemein als Replikation bezeichnet.
Siehe auch
Erstellen eines cRPD-Pods mit Job Resource
Ein Job erstellt einen oder mehrere Pods und versucht weiterhin die Ausführung der Pods, bis eine bestimmte Anzahl von ihnen erfolgreich beendet wird. Wenn eine festgelegte Anzahl von erfolgreichen Abschlussen erreicht ist, ist die Aufgabe abgeschlossen. Sie können einen Job auch verwenden, um mehrere Pods parallel auszuführen. Beim Löschen eines Auftrags werden die erstellten Pods bereinigt. Durch das Aussetzen eines Auftrags werden seine aktiven Pods gelöscht, bis der Job wieder aufgenommen wird. So erstellen Sie den cRPD-Pod mithilfe der Datei crpd_job.yaml:
Erstellen eines cRPD-Pod mit DaemonSet
DaemonSet stellt sicher, dass alle (oder einige) Nodes eine Kopie eines Pods ausführen. Wenn Knoten zum Cluster hinzugefügt werden, werden pods hinzugefügt. Wenn Knoten aus dem Cluster entfernt werden, werden diese Pods mit Müll gesammelt. Durch Das Löschen eines DaemonSet werden die erstellten Pods bereinigt.
Erstellen des cRPD-Pod mit der Datei crpd_daemonset.yaml
Jeder Pod ist dazu bestimmt, eine einzelne Instanz einer bestimmten Anwendung auszuführen. Wenn Sie Ihre Anwendung horizontal skalieren möchten (z. B. mehrere Instanzen ausführen), sollten Sie mehrere Pods für jede Instanz verwenden. In Kubernetes wird dies allgemein als Replikation bezeichnet.
Siehe auch
Skalierung von cRPD
Sie können mehrere Instanzen von cRPD basierend auf der Anforderung erstellen, indem Sie den –replicas
Parameter für den kubectl run
Befehl verwenden. Die Bereitstellung ist ein Objekt, das ihre ReplicaSets besitzen und verwalten kann.
Vor der Skalierung sollte ein Pod vorhanden sein.
So skalieren Sie:
So verkennen Sie sich:
-
Führen Sie den folgenden Befehl aus, um den Service auf 2 Replikate zu skalieren:
root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2
deployment.apps/crpdref scaled
-
Führen Sie den folgenden Befehl aus, um die Bereitstellungen auflisten zu können:
root@kubernetes-master:~# kubectl get deployments
-
Führen Sie den folgenden Befehl aus, um die Anzahl der Pods auflisten zu können. Sie können sehen, dass die 2 Pods beendet wurden:
root@kubernetes-master:~# kubectl get pods -o wide
Fortlaufendes Update der cRPD-Bereitstellung
Sie können Pod-Instanzen mit neuen Versionen aktualisieren. Durch fortlaufende Updates kann die Aktualisierung von Bereitstellungen ohne Ausfallzeiten erfolgen, indem Pods-Instanzen schrittweise mit neuen aktualisiert werden. Die neuen Pods werden auf Knoten mit verfügbaren Ressourcen geplant. Rollback-Updates fördern eine Anwendung von einer Umgebung zur anderen mit kontinuierlicher Integration und kontinuierlicher Bereitstellung von Anwendungen ohne Ausfallzeiten. In Kubernetes werden Updates versioniert, und jedes Bereitstellungsupdate kann auf die vorherige stabile Version zurückgesetzt werden.
So aktualisieren Sie die cRPD-Bereitstellung mit einem neuen Image und bewahren 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 die Nutzung der gemeinsam genutzten Netzwerkressourcen (z. B. Ports) koordinieren. In einem Pod kommunizieren Container über localhost
eine IP-Adresse und einen Port.
Container innerhalb des Pod zeigen den System-Hostnamen genauso an wie der für den Pod konfigurierte name
.
Jeder Container in einem Pod kann den privilegierten Modus aktivieren, indem das privileged
Flag auf der Container-Spezifikation verwendet wird. Dies ist nützlich für Container, die Verwaltungsfunktionen des Betriebssystems verwenden, wie z. B. die Manipulation des Netzwerkstacks oder den Zugriff auf Hardwaregeräte. Prozesse in einem privilegierten Container erhalten fast die gleichen Berechtigungen, die für Prozesse außerhalb eines Containers zur Verfügung stehen.
So zeigen Sie die Pod-Bereitstellung mit Ressourcen an:
cRPD Pod-Bereitstellung mit Mounted Volume
Ein emptyDir
ist eines unter den verschiedenen Arten von Volumes, die auf K8s unterstützt werden, und wird zuerst erstellt, wenn ein Pod einem Knoten zugewiesen wird, und existiert, solange dieser 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 dieselben Dateien auf dem emptyDir
Volume lesen und schreiben, obwohl dieses Volume an denselben oder unterschiedlichen Pfaden in jedem Container bereitgestellt 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-Pod-Bereitstellung durch Einhängen des Speicherpfads auf Kubernetes an: