Коробочки-коробочки…
Предыдущая часть: Как Дима сервер домашний поднимал
Следующая часть: Новое начало
Весь цикл: Домашний сервер
Мы возвращаемся к нашей эпопее с домашним сервером, напомню, мы в прошлый раз обсуждали, что такое виртуализация - это технология, с помощью которой мы можем на одном устройстве (сервере, ПК и т.д.) разместить множество “виртуальных устройств”.
Сегодня мы поговорим о таких вещах, как контейнеризация и заденем при этом понятие гипервизора.
Начнем, пожалуй, как раз с гипервизора, кратко, емко, четко:
Гипервизоры
Гипервизор - программа, позволяющая управлять виртуальными машинами и контейнерами (есть небольшое различие, но об этом дальше). На этом, в общем-то, всё, стоит ещё сказать, что гипервизоры бывают двух типов:
1) Bare-metal - т.е. гипервизоры представляющие собой “операционную систему”, которая устанавливается напрямую на “железо”. Это обеспечивает наибольшую производительность и совместимость, но, очевидно, что это сложнее, чем просто поставить VirtualBox)
Примеры: Proxmox, ESXi, oVirt(и производные)
2) Hosted - гипервизор, являющийся натурально программой для уже существующей системы. Такие гипервизоры проще в освоении и используются для пользовательского использования (на винду линукс накатить попробовать).
Меньшая производительность т.к. комплектующие эмулируются для машин, но проще в использовании.
Примеры: VMWare Workstation, VirtualBox, QEMU/KVM VM Manager.
Контейнеризация
Как мы уже говорили, очень круто изолировать каждую программу в отдельной машине, отдельный инструментарий и всё такое, но в чем же проблема?
А проблема в том, что мы для каждой программки поднимаем полноценную (иногда урезанную) ОС, со своим ядром, своими особенностями и т.д.
И, разумеется, это всё надо питать ресурсами, что дорого, очень дорого, особенно, если у нас отказоустойчивый кластер с десятками, а то и сотнями машин.
Какой же выход? А очень простой, давайте не поднимать для каждой “машины” отдельную ОС с ядром, а использовать одно - которое предоставляет ОС сервера, а приложения запускать в изолированных “окружениях”.
К слову, почему я сказал, что гипервизоры для контейнеров и виртуалок отличаются? В сущности, для контейнеров нет как таковой системы, но есть CRI - Container Runtime Interface, то, с помощью чего, контейнеры и запускаются.
ВМ такого не надо, у них у каждой своё ядро. (Но я не хочу разделять понятия, потому что сейчас гипервизоры универсальны и имеют как среду для ВМ, так и CRI)
В общем-то, на этом всё, но напоследок скажу, что в продакшене часто используют смешанный тип, т.е. мы на виртуализации разворачиваем среду для контейнеризации и в машинах разворчиваем контейнеры смежных приложений, так мы изолируем группы программ друг от друга.
Спасибо за внимание, в следующей статье мы уже перейдем к конкретным решениям, которые использую я.