Виртуализация, контейнеризация и оркестрация

Виртуализация
Виртуализация – это технология создания виртуальных машин на одном физическом сервере. Такие виртуальные машины (ВМ) полностью изолированы друг от друга: на них можно ставить разные операционные системы.
Виртуализация работает так:
- На физический сервер ставится ОС и гипервизор – специальное ПО для распределения вычислительных ресурсов между ВМ.
- Создаются виртуальные машины, при этом на каждую ВМ устанавливается ОС.
Контейнеризация
Контейнеризация — метод, с помощью которого код упаковывается в единый исполняемый файл вместе с библиотеками и зависимостями. Такой файл называют контейнером. Контейнер не зависит от настроек основной операционной системы и может работать на любой платформе или в облаке. Чаще всего для контейнеризации используется Docker.
Контейнеризация работает так:
- На физический сервер ставится ОС.
- Формируется образ контейнера – представление, в которое упаковывается код со всеми зависимостями.
- Контейнер распаковывается на сервере и использует ядро ОС сервера. Поэтому он не требует установки отдельной ОС.
Назначение контейнеризации
- Решается проблема с зависимостями в разных окружениях. Отлаженное на одном компьютере приложение можно легко развернуть на другом, ведь контейнер содержит все необходимые зависимости.
- Использование в микросервисной архитектуре. Контейнеры хорошо подходят для приложений на основе микросервисов: можно проверить работоспособность каждого контейнера, ограничить каждую службу определенны ми ресурсами, запускать и останавливать их независимо друг от друга.
- Контроль ресурсов и снижение нагрузки на систему благодаря тому, что каждый контейнер не содержит образ ОС.
- Изоляция ошибок. Выход из строя одного контейнера не влияет на дальнейшую работу других контейнеров.
Виртуальные машины vs контейнеры
- Виртуальная машина (ВМ) — операционная система (ОС), которая развернута внутри другой операционной системы. ВМ имеет свое ядро и некоторые обособленные ресурсы.
- Контейнеры — это модули, в каждом из которых запускается одно приложение. Они занимают меньше памяти, использую небольшое количество ресурсов и почти не зависят от операционной системы физического сервера.
Различия
- Виртуальная машина фактически представляет полноценную ОС с ядром, что требует больше аппаратных ресурсов (объемы оперативной памяти и хранилища, процессорные мощности).
- Контейнер содержит сжатую версию ОС и использует общее ядро физического сервера, поэтому требует меньше аппаратных ресурсов.
- Виртуальные машины могут запускать любое ядро операционной системы независимо от основной операционной системы. Например, если на сервере Linux, то виртуальная машина может быть Windows.
- Контейнер должен быть совместим с ядром ОС сервера. Например, если на сервере Linux, то и контейнер должен использовать Linux.
Оркестрация
Оркестрация – автоматизация управления контейнерами. Например, если контейнер выходит из строя, оркестратор запустит другой контейнер.
Технология возникла потому, что контейнерные приложения могут быть сложными и при их производстве может потребоваться несколько сотен отдельных контейнеров, которыми трудно управлять. Чаще всего для оркестрации используе тся Kubernetes.
Функции оркестратора
- Управление контейнерами на нескольких физических серверах одновременно.
- Оптимизация ресурсов используемого оборудования.
- Автоматическое развертывание и обновления приложений.
- Подключение и добавление хранилищ для запуска приложений с отслеживанием состояния.
- Масштабирование контейнеров на лету.
Подборка материалов по теме
- Документация Docker
- Документация Kubernetes
- Контейнеризация приложений: что это такое и когда стоит использовать
- Виртуализация и контейнеризация: обзор технологий и в чем разница
- Что такое контейнеризация — Yandex Cloud
- Контейнеризация понятным языком — Интервью с System Engineers (текст)
- Docker и Kubernetes — чем отличаются технологии контейнеризации