14 декабря 2020 Время чтения: 8 минут

Рабочие варианты использования виртуальных машин, Docker, LXD и Kubernetes

Александр Гришин, руководитель платформы VMmanager

Иван Сидоров, исполнительный директор ITSumma

ISPSystem

Почему одни выбирают Docker или LXD, а другим хватает виртуальных машин? И кому необходим Kubernetes? Давайте разберемся, чем отличаются эти инструменты, и при каких условиях они наиболее полезны.

Содержание

Виртуальные машины

Виртуальная машина — это виртуальный сервер, который создается на базе физического с помощью специального ПО, такого как:

  1. VMmanager
  2. VMware vSphere
  3. Microsoft Hyper-V и др.

На каждой ВМ может быть запущена своя ОС. Виртуальные машины не могут осуществлять моментальное масштабирование в случае нехватки ресурсов, но у них есть свои преимущества, из-за которых им отдают предпочтение.

К примеру, перед вами стоит задача обеспечить сотрудников различных отделов компании рабочими ресурсами. Но в каждом отделе существуют свои потребности — кому-то нужен CRM, другим нужен сайт, а третьим — 1С или доступ к флешке. И все это на разных ОС. Чтобы решить эту задачу, достаточно пары специалистов, которые по запросу будут создавать «виртуалки» с необходимыми рабочими средами. Дополнительный плюс таких рабочих сред — изолированность друг от друга. Другими словами, VM отлично подходят для гетерогенной ИТ-инфраструктуры.

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

К недостаткам ВМ можно отнести то, что они занимают большое количество места на жестком диске и потребляют много ресурсов (под виртуальную ОС и драйверы для виртуальных устройств).

Виртуальные машины удобно использовать, если:

  1. вам необходимо выполнять рабочие процессы в бесперебойном режиме;
  2. у вас нет команды разработчиков;
  3. вы не нуждаетесь в моментальном масштабировании ресурсов;
  4. вам нужно пространство, где можно тестировать приложения, не опасаясь вредоносного ПО или инсайда;
  5. у вас в компании отделы с различными требованиями к ОС и ПО;
  6. вам нужно простое и недорогое решение для доставки ресурсов;
  7. вам нужно эмулировать аппаратное устройство, например видеокарту.
Схема аппаратной виртуализации KVM. Технология эмулирует физическое оборудование для каждой виртуальной машины. Это даёт высокую степень изоляции, но и повышает «налог на виртуализацию»: KVM требует больше вычислительных ресурсов

Docker

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

Естественной операционной системой для Docker является Linux. Поэтому, если требуется запуск докер-контейнеров на Windows, — его нужно создавать внутри виртуальной машины с ОС Windows.

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

Docker — это подходящее, если вашей команде разработчиков необходимо:

  1. автоматизировать рабочие процессы,
  2. простое в настройке пространство для работы с приложениями,
  3. возможность тестирования множества разных конфигураций в стабильной среде.

Небольшим компаниям, которые не занимаются разработкой, но для которых критична изолированность каждого сервиса (CRM, сайтов, БД, ERP-системы или бухгалтерии и т.д.), достаточно ВМ для своих процессов.

LXD

Linux Container Daemon (LXD) базируется на технологии работы с контейнерами LXC, добавляя ей более широкие возможности.

Если Docker — это виртуализация приложений, то LXD — виртуализация ОС, инструмент для создания полноценных легковесных ВМ (за это его еще называют “легковизор”).

Принцип работы LXD такой же, как у Docker с контейнерами. Только в случае с LXD не приложения, а образы ОС разворачиваются как контейнеры.

У LXD есть несколько преимуществ перед другими инструментами:

  1. LXD-контейнеры работают быстрее, чем виртуальные машины;
  2. в отличие от виртуальных машин, LXD не нужно выделять оперативную память под ядро ОС;
  3. изолированность lxd-контейнеров выше, чем у Docker.
Схема контейнерной виртуализации LXD. Изолированная архитектура обеспечивает безопасность

Виртуализация LXD позволяет запускать больше полноценных ОС на одном оборудовании, не затрачивая ресурсы типичные для запуска традиционных VM (оперативная память, процессор, адаптер и т.д.). Таким образом, обеспечивается значительная производительность и экономия в долгосрочной перспективе.

LXD поможет там, где нужно оперативно выдавать большое количество изолированных контейнеров. Например, для команды разработчиков или хостинг-провайдеров.

LXD-контейнеры быстрые и лёгкие. В платформе VMmanager на создание одного экземпляра ушло 6 секунд

LXD — лучший вариант, если вам нужно:

  1. быстро разворачивать инфраструктурные контейнеры для пользователей;
  2. обеспечить высокую степень утилизации ресурсов физического сервера;
  3. организовать несколько локальных изолированных сред, например, для разработки или тестирования ПО;
  4. обеспечить изолированность физической инфраструктуры от процессов выполняемых в контейнере.

Kubernetes

Теперь, давайте обратимся к Kubernetes. Для чего он нужен, если для приложений есть Docker, для провайдеров и разработчиков — LXD, а остальным достаточно ВМ?

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

* В блоге Kubernetes вышла новость о прекращении поддержки Docker-прослойки Dockershim. Однако пользователи по-прежнему могут применять Docker в Kubernetes.

К примеру, вы владелец бизнеса, у которого есть интернет-магазин. Скоро наступит период скидок. Вы планируете запустить акцию, но не знаете, насколько популярной она станет. Если акция будет успешной, то вашему сайту предстоит выдержать серьезную нагрузку. Вам понадобятся дополнительные мощности, чтобы интернет-магазин функционировал в стабильном режиме, а вы не потеряли прибыль. В такой ситуации, на “виртуалках” без Kubernetes вам придется заранее рассчитать нужное количество ресурсов и оплатить их. Виртуальные машины не имеют возможности моментального масштабирования. И, если акция будет не столь успешной, то вы просто переплатите за эти дополнительные мощности, не получив ожидаемого результата.

В зависимости от настроек, Kubernetes обеспечивает горизонтальное и вертикальное масштабирование в автоматическом режиме. Это значит, что при резком наплыве посетителей ваш сайт не «ляжет». Система выделит нужное количество ресурсов, перераспределив нагрузку в фоновом режиме, поэтому сбоев не будет. Компания не понесет потери из-за неработающего сайта, а вы заплатите только за те мощности, которые были использованы во время акции.

Kubernetes актуален для компаний, которые имеют команды Dev-Ops-инженеров с сформированными Dev-Ops-практиками, и которым нужно поддерживать инфраструктуру внутренней разработки.

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

Kubernetes — идеальное решение, если вам необходимо:

  1. легкое развертывание контейнеров;
  2. гибкое управление контейнерами в производственной среде (мониторинг трафика, распределение нагрузки в автоматическом режиме);
  3. моментальное автоматическое масштабирование приложений (наращивание и откат ресурсов);
  4. иметь безопасную среду для разработки (в Kubernetes можно использовать несколько схем авторизации одновременно).

ВМ, Docker, LXD, Kubernetes — для кого?

Виртуальные машины актуальны для решения постоянных задач в большинстве компаний. Если вам нужно стабильное выполнение различных рабочих процессов в безопасной среде, то выбирайте ВМ, которые отвечают всем этим требованиям. Это простая и доступная для всех виртуализация.

Docker— отличный инструмент, если у вас есть команда разработчиков, для которых важна стабильная среда работы с контейнерами. Docker — стандарт в сфере создания и тестирования ПО, который экономит время разработчикам.

LXD-контейнеры наиболее актуальны для компаний, имеющих ИТ-отдел, раздающий ресурсы. В том числе, для разработки под собственные нужды, а также хостинговых и телекоммуникационных провайдеров, которым важна скорость развертывания и легковесность виртуальных машин. Этот тип контейнера объединяет в себе скорость Docker и надежность виртуальной машины.

Kubernetes подходит компаниям с крупными веб-проектами (сайты крупных магазинных сетей, государственные сайты федерального значения, сайты СМИ, авиакомпаний, популярными SaaS), у которых есть не только команды разработчиков, но и Dev-Ops-инженеры. Kubernetes совершенствует работу с приложениями и микросервисами в контейнерах, решая проблему моментального автоматического масштабирования.

Возьмите максимум от каждой технологии

ISPsystem рекомендует VMmanager для управления виртуальными машинами: это быстрая, безопасная и удобная в работе платформа для серверной виртуализации на базе KVM. А теперь в VMmanager также доступна работа с альтернативой Docker – быстрыми, лёгкими и при этом изолированными контейнерами LXD.

Смотрите в сторону Kubernetes? Или уже используете эту технологию, но вам нужна экспертиза, тогда рекомендуем обратиться в ITSumma. У компании десятки успешных кейсов внедрения и аудита Kubernetes, в т.ч. в М.Видео, S7 Airlines, ТАСС.