openstack и docker: вместе и по отдельности
TRANSCRIPT
OpenStack и Docker:вместе и по отдельности
Андрей Маркелов markelov.blogspot.com
OpenStack Russia РИТ++ Meetup
21 мая 2015
План презентации
● Контейнеры и виртуализация
● Docker● Использование
Docker совместно с OpenStack
Контейнеры и виртуализация
● Разные концепции:– Виртуализация – вертикальное абстрагирование;
– Контейнеры – горизонтальное разбиение;
● Контейнеры используются для замены виртуализации там, где они справляются лучше:
– Горизонтальная изоляция приложений;
– Делегирование окружений;
– Виртуализация приложений;
– Максимальная плотность.
● Зачастую контейнеры используются поверх виртуализации.
Контейнеры в Linux
Namespaces (пространства имен)
● Mount namespaces– Mount(),umount()
● UTS namespaces
– Uname()
● IPC namespaces
– Объекты System V IPC, Очереди сообщений POSIX
● PID namespaces
– /proc, PID
● Network namespaces
– Сетевые карты, брандмауэр, табл. маршрутизации
CGroups
● Десять групп● Основные группы:
– Cpu
– Memory
– Blkio
Мандатный контроль доступа
● Интеграция с ядром– LSM и расширенные атрибуты
● Для чего использовать:
– Запуск с минимальными привилегиями
– Защита от эксплоитов
– Защита пользовательских данных
● Для чего не предназначена:
– Аудит кода
– Шифрование
– Обновления
Docker – изменил правила игры
● Docker CLI – интересен, но это не столь значительное нововведение. Технологии, позволяющие создавать контейнеры в GNU/Linux > 10 лет
● Docker интересен как формат упаковки и распространения приложений.
Docker – терминология
● Контейнер – запущенное из образа приложение.● Образ – статический снимок конфигурации
контейнера. Образы могут зависеть от других образов. Образ всегда доступен только на чтение. Изменения сохраняются только созданием образа поверх образа.
● Образ платформы – не имеющий родительских образов. Содержит базовые библиотеки и утилиты для запуска приложений.
Docker – упаковка приложений
● API и формат образов:– перемещаемость контейнеров между хостами;
– контроль версий и повторное использование компонентов;
– удаленный репозиторий образов;
– Dockerfile – шаблон конфигурации для сборки образов;
– Для разделения различных уровней контейнера на уровне файловой системы могут использоваться AUFS, btrfs, vfs и DeviceMapper.
Драйвер Docker для Nova - установка
● Установить и запустить Docker на выч. Узле– yum -y install net-tools docker-io
– systemctl start docker
– git clone https://github.com/stackforge/nova-docker.git
– python setup.py install
● Добавить формат в Glance– crudini --set /etc/glance/glance-api.conf DEFAULT
container_formats ami,ari,aki,bare,ovf,ova,docker
● Указать драйвер в Nova-compute– crudini --set /etc/nova/nova.conf DEFAULT
compute_driver novadocker.virt.docker.DockerDriver
Драйвер Docker для Nova - работа
[root@compute ~]# docker pull larsks/thttpd
[root@compute ~]# source keystonerc_admin
[root@compute ~]# docker save larsks/thttpd | glance image-create --is-public True --container-format docker --disk-format raw --name larsks/thttpd+------------------+--------------------------------------+
| container_format | docker |
| updated_at | 2015-05-09T19:42:25 |
+------------------+--------------------------------------+
[andrey@pc ~]$ glance image-list
+------+---------------------+-------------+------------------+
| ID | Name | Disk Format | Container Format |
+------+---------------------+-------------+------------------+
| bc.. | cirros-0.3.3-x86_64 | qcow2 | bare |
| 71.. | larsks/thttpd | raw | docker |
+------+---------------------+-------------+------------------+
Драйвер Docker для Nova - работа
[andrey@pc ~]$ source keystonerc_demo [andrey@pc ~]$ nova boot --image larsks/thttpd --flavor m1.small test1
[root@compute ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4680097f2cc0 larsks/thttpd:latest "/thttpd -D -l /dev/ 13 minutes ago Up 13 minutes nova-65de57d0-f033-4818-a522-2c3291dc516b
Драйвер Docker для Nova - Horizon
Magnum
● API-сервис для использования Docker, Kubernetes как ресурсов в OpenStack
● Использует Heat и ОС (Atomic, CoreOS, Snappy)● ОС включает в себя компоненты Docker и Kubernetes.
Когда кластер запускается в кластере Nova, Magnum им управляет
● https://github.com/openstack/magnum
Kolla
● Сервсис для контейниризации служб OpenStack как отдельных микро-сервисов
– Репозиторий Kollaglue
● Задачи:– Внедрение;
– Упрощение обновлений;
– Переносимость;
● Например oVirt 3.6 – интеграция с OpenStack– Управление при помощи TripleO, Heat, Ansible и
т.д.
● https://github.com/stackforge/kolla
Спасибо за внимание
СПАСИБО ЗА ВНИМАНИЕ!