So bereinigen Sie Ihre Docker-Umgebung mit CloudSlang in einem CoreOS-Cluster

Einführung

CoreOS ist eine Linux-Distribution, die sich darauf konzentriert, Cluster-Umgebungen mithilfe von Docker-Containern und Service Discovery schnell zu spinnen. Wenn Sie CoreOS noch nicht kennen, lesen Sie die Lernserie vonGetting Started with CoreOS.

Docker-Images können jedoch sehr viel Speicherplatz auf dem Docker-Host belegen. Ein Basis-Image kann Hunderte von MB groß sein und benutzerdefinierte Images können problemlos 1 GB erreichen. Wenn Sie viele Versionen neuer Docker-Images für Ihre App haben, können diese problemlos auf dem Serverspeicher abgelegt werden. Auf dem Server ist möglicherweise kein Speicherplatz mehr verfügbar, wenn Sie nicht von Zeit zu Zeit alte oder nicht verwendete Bilder löschen.

CloudSlang ist eine Open-Source-Orchestrierungslösung, mit der Prozesse auf einfache Weise mithilfe von Workflows oder kurz Flows automatisiert werden können. Ein Flow enthält eine Liste von Aufgaben und Navigationslogik. Eine Task kann eine Operation aufrufen, die eine Aktion enthält, die ein Python-Skript oder eine Java-Methode oder einen anderen Ablauf ausführt. Mit der CloudSlang-Sprache können Sie Flows in Textform und wiederverwendbar definieren. Sie können entweder die vorhandenen Inhalte (Docker, OpenStack und Dienstprogramme) zum Verwalten Ihrer bereitgestellten Anwendungen verwenden oder Ihre eigenen benutzerdefinierten Flows erstellen.

In diesem Lernprogramm werden wir die Docker-Umgebung für jeden in einem CoreOS-Cluster mit CloudSlang bereitgestellten Computer bereinigen. Wir verwenden den bereits vorhandenen Inhalt, sodass Sie keine CloudSlang-Dateien bearbeiten müssen.

Voraussetzungen

Bevor Sie beginnen, benötigen Sie:

  • Ein Ubuntu 14.04-Droplet mita sudo non-root user, das Ihr CloudSlang-Server sein wird.

  • Java (version 7 or later) installed auf dem CloudSlang-Server. Beachten Sie, dass Sie nicht das JDK, sondern nur die JRE installieren müssen.

  • Ein Cluster von drei CoreOS-Maschinen. Wenn Sie noch keinen haben, können Sie einen einrichten, indem Siethis tutorial folgen.

[[Schritt-1 - Installation-Entpacken]] == Schritt 1 - Entpacken installieren

In diesem Schritt installieren wirunzip auf dem CloudSlang-Server.

Stellen Sie zunächst sicher, dass die Paketliste aktuell ist.

sudo apt-get update

Dann installieren Sie unzip.

sudo apt-get install unzip

[[Schritt-2 - Herunterladen von Cloudslang]] == Schritt 2 - Herunterladen von CloudSlang

In diesem Abschnitt werden das CloudSlang CLI-Tool und die verfügbaren Inhalte (vordefinierte Vorgänge und Abläufe) heruntergeladen. Die CloudSlang-CLI ist ein Befehlszeilen-Schnittstellentool, mit dem Flows ausgeführt werden können.

Laden Sie zunächst das CloudSlang CLI-Archiv herunter.

wget https://github.com/CloudSlang/cloud-slang/releases/download/cloudslang-0.7.29/cslang-cli-with-content.zip

Entpacke das Archiv.

unzip cslang-cli-with-content.zip

Dadurch wird eincslang-Verzeichnis erstellt. Wenn Sie den Inhalt dieses Verzeichnisses auflisten,

ls ~/cslang

Sie werden drei Verzeichnisse darin bemerken:

  • python-lib, das für externe Python-Bibliotheken verwendet wird.

  • cslang, das die CloudSlang-CLI-Dateien enthält. Der Ordnercslang/bin enthält eine Datei mit dem Namencslang, mit der die CLI gestartet wird. Dascslang/lib enthält die erforderlichen Abhängigkeiten für die Anwendung.

  • content, das den vorgefertigten CloudSlang-Inhalt enthält. Der Fluss, den wir ausführen werden, befindet sich beicontent/io/cloudslang/coreos und heißtcluster_docker_images_maintenance.sl. Dieser Fluss durchläuft alle Computer im Cluster und löscht nicht verwendete Docker-Images.

[[Schritt-3 - Hinzufügen des privaten Schlüssels]] == Schritt 3 - Hinzufügen des privaten Schlüssels

CloudSlang benötigt SSH-Schlüsselzugriff auf Ihren CoreOS-Cluster. In diesem Schritt fügen wir dies hinzu, indem wir ein neues Schlüsselpaar auf dem CloudSlang-Server erstellen und den öffentlichen Schlüssel zum CoreOS-Cluster hinzufügen.

Erstellen Sie zunächst ein Schlüsselpaar ohne Passphrase, indem Sie die Schritte 1 und 2 vonthis tutorial ausführen. Nachdem Sie ein Schlüsselpaar haben, müssen Sie Ihren öffentlichen Schlüssel zu jedem Computer in Ihrem CoreOS-Cluster hinzufügen.

Holen Sie sich zunächst den öffentlichen Schlüssel auf Ihren CloudSlang-Server.

cat ~/.ssh/id_rsa.pub

Sie sehen eine lange Ausgabe, die mitssh-rsa beginnt und mitusername@hostname endet. Kopieren Sie dies, um es im nächsten Befehl zu verwenden.

SSH auf einem Ihrer CoreOS-Server (der Standardbenutzername istcore), und führen Sie dann den folgenden Befehl aus, um Ihren öffentlichen Schlüssel hinzuzufügen.

echo "your_public_key" >> ~/.ssh/authorized_keys

Sie müssen dies für jeden Server in Ihrem CoreOS-Cluster tun.

[[Schritt 4 - Ausführen des Flusses]] == Schritt 4 - Ausführen des Flusses

In diesem Abschnitt werden wir den Flow ausführen und sein Verhalten überprüfen.

Um den Flow auf dem CloudSlang-Server auszuführen, wechseln Sie zunächst in das Verzeichnis/cslang/bin.

cd ~/cslang/cslang/bin/

Führen Sie die ausführbare Dateicslang aus, um die CLI zu starten.

./cslang

Nach einem Moment wird der CloudSlang-Begrüßungsbildschirm angezeigt.

0.7.26-SNAPSHOT
Welcome to CloudSlang. For assistance type help.

Geben Sie den folgenden Befehl in die CLI ein und ersetzen Sieyour_coreos_server_ip durch die IP-Adresse eines der CoreOS-Server in Ihrem Cluster.

custom_prefix(cslang>)
run --f  ../../content/io/cloudslang/coreos/cluster_docker_images_maintenance.sl --i coreos_host=your_coreos_server_ip,coreos_username=core,private_key_file=~/.ssh/id_rsa --cp ../../content/

Der Befehlrun löst den Fluss aus. --f gibt den Pfad zum Fluss an. --i gibt die Flusseingaben an: einen CoreOS-Host und einen Benutzernamen sowie den zugehörigen privaten SSH-Schlüssel. --cp gibt den Klassenpfad an, wenn der Fluss von anderen Operationen und Flüssen abhängt. Da dieser Flow viele verschiedene Abhängigkeiten aufweist, können wir den übergeordneten Ordnercontentangeben. Das Scannen ist rekursiv, sodass auch Unterverzeichnisse gescannt werden.

Die Ablauflogik ruft zuerst die IP-Adressen der Computer aus dem Cluster ab, iteriert dann über die Computer und löscht nicht verwendete Bilder. Zunächst werden alle Bilder abgerufen, wobei nur die nicht verwendeten Bilder angezeigt werden, indem laufende / angehaltene Container überprüft werden. Als nächstes werden die nicht verwendeten Bilder gelöscht. Das Gleiche gilt schließlich für baumelnde Bilder.

Während der Ablauf ausgeführt wird, zeigt die CLI die Namen der ausgeführten Tasks an. Sobald der Fluss beendet ist, gibt die CLI einige nützliche Informationen wie die Flussausgaben und das Flussergebnis aus.

In unserem Fall lautet das Flow-Ergebnis entweder SUCCESS (was bedeutet, dass nicht verwendete Docker-Images im Cluster gelöscht wurden) oder FAILURE (was bedeutet, dass ein Problem aufgetreten ist). Dieser Flow hat eine Ausgabe:number_of_deleted_images_per_host. Dies ist die Anzahl der Bilder, die auf jedem Host im Cluster gelöscht wurden.

Wenn alles gut gegangen ist, sollten Sie eine Ausgabe ähnlich der folgenden sehen:

...

Flow : cluster_docker_images_maintenance finished with result : SUCCESS
Execution id: 101600001, duration: 0:02:06.180

Wenn Sie weitere Informationen zur Ausführung wünschen, suchen Sie in der Dateiexecution.log, die von der CLI erstellt wird, im Ordnerbin.

Fazit

Jetzt werden alle nicht verwendeten Docker-Images in Ihrem CoreOS-Cluster gelöscht!

In diesem Tutorial haben Sie erfahren, wie Sie CloudSlang auf Ihrem Ubuntu-Computer ausführen und die CloudSlang-CLI zum Auslösen von Flows verwenden. Sie haben auch einen vorgefertigten Workflow verwendet, um Ihre Docker-Umgebung zu bereinigen.

Copyright 9. Juni 2015, Hewlett-Packard Development Company, L.P. Wiedergabe mit Genehmigung.