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



🔹 Виртуализация – это технология создания виртуальных машин на одном физическом сервере. Такие виртуальные машины (ВМ) полностью изолированы друг от друга: на них можно ставить разные операционные системы.



Виртуализация работает так:

1. На физический сервер ставится ОС и гипервизор – специальное ПО для распределения вычислительных ресурсов между ВМ

2. Создаются виртуальные машины, при этом на каждую ВМ устанавливается ОС





🔸 Контейнеризация — метод, с помощью которого код упаковывается в единый исполняемый файл вместе с библиотеками и зависимостями. Такой файл называют контейнером. Контейнер не зависит от настроек основной операционной системы и может работать на любой платформе или в облаке. Чаще всего для контейнеризации используется Docker.



Контейнеризация работает так:

1. На физический сервер ставится ОС

2. Формируется образ контейнера – представление, в которое упаковывается код со всеми зависимостями

3. Контейнер распаковывается на сервере и использует ядро ОС сервера. Поэтому он не требует установки отдельной ОС.



Назначение контейнеризации



1️⃣ Решается проблема с зависимостями в разных окружениях. Отлаженное на одном компьютере приложение можно легко развернуть на другом, ведь контейнер содержит все необходимые зависимости.



2️⃣ Использование в микросервисной архитектуре. Контейнеры хорошо подходят для приложений на основе микросервисов: можно проверить работоспособность каждого контейнера, ограничить каждую службу определенными ресурсами, запускать и останавливать их независимо друг от друга.



3️⃣ Контроль ресурсов и снижение нагрузки на систему благодаря тому, что каждый контейнер не содержит образ ОС.



4️⃣ Изоляция ошибок. Выход из строя одного контейнера не влияет на дальнейшую работу других контейнеров.





Виртуальные машины vs контейнеры



🔹 Виртуальная машина
(ВМ) — операционная система (ОС), которая развернута внутри другой операционной системы. ВМ имеет свое ядро и некоторые обособленные ресурсы.



🔸 Контейнеры — это модули, в каждом из которых запускается одно приложение. Они занимают меньше памяти, использую небольшое количество ресурсов и почти не зависят от операционной системы физического сервера.



🔹 Виртуальная машина фактически представляет полноценную ОС с ядром, что требует больше аппаратных ресурсов (объемы оперативной памяти и хранилища, процессорные мощности).



🔸 Контейнер содержит сжатую версию ОС и использует общее ядро физического сервера, поэтому требует меньше аппаратных ресурсов



🔹 Виртуальные машины могут запускать любое ядро операционной системы независимо от основной операционной системы. Допустим, если на сервере Linux, то виртуальная машина может быть Windows.



🔸 Контейнер должен быть совместим с ядром ОС сервера. Допустим, если на сервере Linux, то и контейнер должен использовать Linux.





Оркестрация



Оркестрация – автоматизация управления контейнерами. Например, если контейнер выходит из строя, оркестратор запустит другой контейнер.



Технология возникла потому, что контейнерные приложения могут быть сложными и при их производстве может потребоваться несколько сотен отдельных контейнеров, которыми трудно управлять. Чаще всего для оркестрации используется Kubernetes.



Функции оркестратора



1️⃣ Управление контейнерами на нескольких физических серверах одновременно

2️⃣ Оптимизация ресурсов используемого оборудования

3️⃣ Автоматическое развертывание и обновления приложений

4️⃣ Подключение и добавление хранилищ для запуска приложений с отслеживанием состояния

5️⃣ Масштабирование контейнеров на лету



📎 Материалы по теме

1. Документация Docker

2. Документация Kubernetes

3. Контейнеризация приложений: что это такое и когда стоит использовать

4. Виртуализация и контейнеризация: обзор технологий и в чем разница

5. Что такое контейнеризация — Yandex Cloud

6. Контейнеризация понятным языком — Интервью с System Engineers (текст)

7. Docker и Kubernetes — чем отличаются технологии контейнеризации



#инфраструктура #оркестрация #контейнеризация #виртуализация