Comment nettoyer votre environnement Docker à l’aide de CloudSlang sur un cluster CoreOS

introduction

CoreOS est une distribution Linux axée sur la création rapide d'environnements en cluster en utilisant les conteneurs Docker et la découverte de services. Si vous êtes nouveau sur CoreOS, consultez cette série de didacticielsGetting Started with CoreOS.

Cependant, les images Docker peuvent occuper beaucoup d'espace disque sur l'hôte Docker. Une image de base peut avoir une taille de plusieurs centaines de Mo et des images personnalisées peuvent facilement atteindre 1 Go. Si vous disposez de nombreuses versions de nouvelles images Docker pour votre application, elles peuvent facilement être stockées sur le stockage du serveur. le serveur peut manquer d’espace disque si vous n’effacez pas de temps en temps des images anciennes ou inutilisées.

CloudSlang est une solution d'orchestration open source qui facilite l'automatisation des processus à l'aide de workflows, ou de flux pour faire court. Un flux contient une liste de tâches et une logique de navigation. Une tâche peut appeler une opération contenant une action qui exécute un script Python ou une méthode Java, ou un autre flux. Le langage CloudSlang vous permet de définir les flux de manière textuelle et réutilisable. Vous pouvez aussi utiliser le contenu existant (Docker, OpenStack et utilitaires) pour gérer vos applications déployées ou créer vos propres flux personnalisés.

Dans ce didacticiel, nous allons nettoyer l'environnement Docker pour chaque ordinateur déployé dans un cluster CoreOS à l'aide de CloudSlang. Nous allons utiliser le contenu existant, vous n'aurez donc pas besoin de modifier les fichiers CloudSlang.

Conditions préalables

Avant de commencer, vous aurez besoin de:

  • Un Droplet Ubuntu 14.04 aveca sudo non-root user, qui sera votre serveur CloudSlang.

  • Java (version 7 or later) installed sur le serveur CloudSlang. Notez que vous n’avez pas besoin d’installer le JDK, seulement le JRE.

  • Un cluster de trois machines CoreOS. Si vous n’en avez pas déjà un, vous pouvez en créer un en suivantthis tutorial.

[[step-1 -—- Installing-unzip]] == Étape 1 - Installation de unzip

Dans cette étape, nous installeronsunzip sur le serveur CloudSlang.

Tout d’abord, assurez-vous que la liste des paquets est à jour.

sudo apt-get update

Ensuite, installez unzip.

sudo apt-get install unzip

[[step-2 -—- loading-cloudslang]] == Étape 2 - Téléchargement de CloudSlang

Dans cette section, nous allons télécharger l’outil CLI CloudSlang et le contenu disponible (opérations et flux prédéfinis). La CLI CloudSlang est un outil d’interface de ligne de commande qui peut être utilisé pour exécuter des flux.

Tout d’abord, téléchargez l’archive CloudSlang CLI.

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

Décompressez l'archive.

unzip cslang-cli-with-content.zip

Cela créera un répertoirecslang. Si vous listez le contenu de ce répertoire,

ls ~/cslang

Vous remarquerez trois répertoires dedans:

  • python-lib, qui est utilisé pour les bibliothèques Python externes.

  • cslang, qui contient les fichiers CLI CloudSlang. Le dossiercslang/bin contient un fichier nommécslang qui est utilisé pour démarrer la CLI. Lecslang/lib contient les dépendances nécessaires pour l'application.

  • content, qui contient le contenu CloudSlang prêt à l'emploi. Le flux que nous allons exécuter est situé àcontent/io/cloudslang/coreos et il est appelécluster_docker_images_maintenance.sl. Ce flux parcourt toutes les machines du cluster et supprime les images Docker non utilisées.

[[step-3 -—- add-the-private-key]] == Étape 3 - Ajout de la clé privée

CloudSlang a besoin d'un accès par clé SSH à votre cluster CoreOS. À cette étape, nous allons ajouter ceci en créant une nouvelle paire de clés sur le serveur CloudSlang et en ajoutant la clé publique au cluster CoreOS.

Tout d'abord, créez une paire de clés sans phrase secrète en suivant les étapes 1 et 2 dethis tutorial. Une fois que vous avez une paire de clés, vous devez ajouter votre clé publique à chacune des machines de votre cluster CoreOS.

Commencez par obtenir la clé publique sur votre serveur CloudSlang.

cat ~/.ssh/id_rsa.pub

Vous verrez une sortie longue qui commence parssh-rsa et se termine parusername@hostname. Copiez ceci pour l'utiliser dans la commande suivante.

SSH dans l'un de vos serveurs CoreOS (le nom d'utilisateur par défaut estcore), puis exécutez la commande suivante pour ajouter votre clé publique.

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

Vous devez le faire pour chaque serveur de votre cluster CoreOS.

[[step-4 -—- running-the-flow]] == Étape 4 - Exécution du flux

Dans cette section, nous allons exécuter le flux et vérifier son comportement.

Pour exécuter le flux, sur le serveur CloudSlang, accédez d'abord au répertoire/cslang/bin.

cd ~/cslang/cslang/bin/

Exécutez l'exécutable appelécslang afin de démarrer la CLI.

./cslang

Au bout d’un moment, vous verrez l’écran d’accueil CloudSlang.

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

Entrez la commande suivante dans la CLI, en remplaçantyour_coreos_server_ip par l'adresse IP de l'un des serveurs CoreOS de votre 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/

La commanderun déclenche le flux. --f spécifie le chemin vers le flux. --i spécifie les entrées de flux: un hôte CoreOS et un nom d'utilisateur, et la clé SSH privée associée. --cp spécifie le chemin de classe lorsque le flux dépend d'autres opérations et flux. Comme ce flux a de nombreuses dépendances différentes, nous pouvons spécifier le dossier parentcontent; l'analyse étant récursive, les sous-répertoires sont également analysés.

La logique de flux récupère d'abord les adresses IP des machines du cluster, puis effectue une itération sur les machines et efface les images inutilisées. Tout d'abord, il récupère toutes les images, ne laissant que les images inutilisées en vérifiant les conteneurs en cours d'exécution / arrêtés. Ensuite, il supprime les images inutilisées. Enfin, il en va de même pour les images pendantes.

Lorsque le flux est en cours d'exécution, la CLI affiche les noms de tâches exécutés. Une fois le flux terminé, la CLI fournit des informations utiles, telles que les sorties de flux et le résultat du flux.

Dans notre cas, le résultat du flux sera soit SUCCESS (ce qui signifie que les images Docker non utilisées ont été effacées de la grappe), soit FAILURE (ce qui signifie qu'un problème est survenu). Ce flux a une sortie:number_of_deleted_images_per_host, qui correspond au nombre d'images supprimées sur chaque hôte du cluster.

Si tout se passe bien, vous devriez voir une sortie semblable à ceci:

...

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

Si vous voulez plus d'informations sur l'exécution, regardez dans le fichierexecution.log qui est créé par la CLI dans le dossierbin.

Conclusion

Désormais, toutes les images Docker non utilisées sont supprimées de votre cluster CoreOS!

Dans ce tutoriel, vous avez vu comment exécuter CloudSlang sur votre machine Ubuntu et comment utiliser la CLI CloudSlang pour déclencher des flux. Vous avez également utilisé un flux de travail prêt à l'emploi pour nettoyer votre environnement Docker.

Copyright 9 juin 2015, Hewlett-Packard Development Company, L.P. Reproduit avec permission.