Как очистить среду Docker с помощью CloudSlang в кластере CoreOS

Вступление

CoreOS - это дистрибутив Linux, ориентированный на быстрое ускорение работы кластерных сред с использованием контейнеров Docker и обнаружения служб. Если вы новичок в CoreOS, ознакомьтесь с этой серией руководствGetting Started with CoreOS.

Однако образы Docker могут занимать довольно много дискового пространства на хосте Docker. Базовое изображение может иметь размеры в сотни МБ, а пользовательские изображения могут легко достигать 1 ГБ. Если у вас есть много выпусков новых образов Docker для вашего приложения, они могут легко накапливаться в хранилище сервера; серверу может не хватить места на диске, если вы время от времени не удаляете старые или неиспользуемые образы.

CloudSlang - это решение для оркестровки с открытым исходным кодом, которое упрощает автоматизацию процессов с помощью рабочих процессов, или для краткости потоков. Поток содержит список задач и логику навигации. Задача может вызвать операцию, которая содержит действие, выполняющее скрипт Python или метод Java, или другой поток. Язык CloudSlang позволяет вам определять потоки текстовым, многократно используемым способом, и вы можете использовать существующий контент (Docker, OpenStack и утилиты) для управления развернутыми приложениями или создания собственных пользовательских потоков.

В этом руководстве мы очистим среду Docker для каждой машины, развернутой в кластере CoreOS с использованием CloudSlang. Мы будем использовать уже существующий контент, поэтому вам не нужно редактировать какие-либо файлы CloudSlang.

Предпосылки

Прежде чем начать, вам понадобится:

  • Капля Ubuntu 14.04 сa sudo non-root user, которая будет вашим сервером CloudSlang.

  • Java (version 7 or later) installed на сервере CloudSlang. Обратите внимание, что вам не нужно устанавливать JDK, только JRE.

  • Кластер из трех машин CoreOS. Если у вас его еще нет, вы можете настроить его, выполнивthis tutorial.

[[step-1 -—- install-unzip]] == Шаг 1. Установка unzip

На этом этапе мы установимunzip на сервер CloudSlang.

Во-первых, убедитесь, что список пакетов обновлен.

sudo apt-get update

Затем установите разархивировать.

sudo apt-get install unzip

[[step-2 -—- download-cloudslang]] == Шаг 2. Скачивание CloudSlang

В этом разделе мы загрузим инструмент CLI CloudSlang и доступный контент (предопределенные операции и потоки). CloudSlang CLI - это инструмент интерфейса командной строки, который можно использовать для запуска потоков.

Сначала загрузите архив CLI CloudSlang.

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

Распакуйте архив.

unzip cslang-cli-with-content.zip

Это создаст каталогcslang. Если вы перечислите содержимое этого каталога,

ls ~/cslang

Вы увидите три каталога в нем:

  • python-lib, который используется для внешних библиотек Python.

  • cslang, который содержит файлы CLI CloudSlang. Папкаcslang/bin содержит файл с именемcslang, который используется для запуска CLI. cslang/lib содержит необходимые зависимости для приложения.

  • content, содержащий готовый контент CloudSlang. Поток, который мы собираемся запустить, расположен вcontent/io/cloudslang/coreos и называетсяcluster_docker_images_maintenance.sl. Этот поток перебирает все машины в кластере и удаляет неиспользуемые образы Docker.

[[шаг-3 -—- добавление-закрытого-ключа]] == Шаг 3 - Добавление закрытого ключа

CloudSlang необходим доступ по SSH-ключу к вашему кластеру CoreOS. На этом этапе мы добавим это, создав новую пару ключей на сервере CloudSlang и добавив открытый ключ в кластер CoreOS.

Сначала создайте пару ключей без ключевой фразы, выполнив шаги 1 и 2 изthis tutorial. После того, как у вас есть пара ключей, вам нужно добавить свой открытый ключ на каждую из машин в вашем кластере CoreOS.

Сначала получите открытый ключ на вашем сервере CloudSlang.

cat ~/.ssh/id_rsa.pub

Вы увидите длинный вывод, который начинается сssh-rsa и заканчиваетсяusername@hostname. Скопируйте это, чтобы использовать в следующей команде.

SSH на один из ваших серверов CoreOS (имя пользователя по умолчаниюcore), затем выполните следующую команду, чтобы добавить свой открытый ключ.

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

Это необходимо сделать для каждого сервера в кластере CoreOS.

[[step-4 -—- running-the-flow]] == Шаг 4 - Запуск потока

В этом разделе мы запустим поток и проверим его поведение.

Чтобы запустить поток, на сервере CloudSlang сначала перейдите в каталог/cslang/bin.

cd ~/cslang/cslang/bin/

Запустите исполняемый файлcslang, чтобы запустить CLI.

./cslang

Через некоторое время вы увидите экран приветствия CloudSlang.

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

Введите следующую команду в CLI, заменивyour_coreos_server_ip на IP-адрес одного из серверов CoreOS в вашем кластере.

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/

Командаrun запускает поток. --f указывает путь к потоку. --i определяет входные данные потока: хост и имя пользователя CoreOS, а также связанный закрытый ключ SSH. --cp указывает путь к классам, когда поток зависит от других операций и потоков. Поскольку этот поток имеет много разных зависимостей, мы можем указать родительскую папкуcontent; сканирование рекурсивное, поэтому подкаталоги также сканируются.

Логика потока сначала извлекает IP-адреса машин из кластера, затем перебирает машины и очищает неиспользуемые образы. Во-первых, он получает все изображения, оставляя только неиспользуемые, проверяя запущенные / остановленные контейнеры. Далее он удаляет неиспользуемые изображения. Наконец, он делает то же самое для висячих изображений.

Во время выполнения потока CLI отображает имена выполненных задач. Как только поток заканчивается, CLI выводит некоторую полезную информацию, такую ​​как выходные данные потока и результат потока.

В нашем случае результатом будет либо УСПЕХ (что означает, что неиспользуемые образы Docker были очищены в кластере), либо ОТКАЗ (что означает возникновение проблемы). Этот поток имеет один результат:number_of_deleted_images_per_host, то есть сколько образов было удалено на каждом хосте в кластере.

Если все прошло хорошо, вы должны увидеть результат, подобный следующему:

...

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

Если вам нужна дополнительная информация о выполнении, посмотрите файлexecution.log, который создается CLI в папкеbin.

Заключение

Теперь все неиспользуемые образы Docker удаляются в вашем кластере CoreOS!

В этом руководстве вы увидели, как запустить CloudSlang на вашем компьютере с Ubuntu и как использовать CLI CloudSlang для запуска потоков. Вы также использовали готовый рабочий процесс для очистки среды Docker.

Авторские права 9 июня 2015 г., Hewlett-Packard Development Company, L.P. Воспроизведено с разрешения.

Related