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

  1. Введение

  2. KVM: Базовая технология виртуализации

  3. OpenStack: Облачная платформа

  4. Как работает связка KVM и OpenStack

  5. Преимущества использования KVM с OpenStack

  6. Какие модули есть в OpenStack

  7. Ключевые отличия между OpenStack и KVM

  8. Заключение

Введение

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

Как пример, можем рассмотреть такие сервисы как хостинг сайтов, создание тестовых сред и тд.

KVM: Базовая технология виртуализации

На сегодняшний день KVM (Kernel-based Virtual Machine) является одним из самых популярных решений для виртуализации на платформе Linux. Его используют как малые компании, так и крупный бизнес, включая облачных провайдеров, благодаря его эффективности и широким возможностям.

Основные моменты:

  • KVM встроен в ядро Linux и превращает Linux в гипервизор.

  • Гипервизор — это программа, которая управляет виртуальными машинами (бывает несколько типов гипервизоров, в нашем случае KVM является гипервизором 1-го типа, о других типах можно легко найти информацию в поисковиках).

  • KVM поддерживает запуск нескольких ОС на одном сервере, эффективно распределяя ресурсы между ВМ.

Резюмируем: KVM встроен в ядро Linux начиная с версии 2.6.20, и благодаря этому его легко установить и настроить на большинстве современных серверов. Он работает как гипервизор — компонент, который позволяет запускать несколько операционных систем на одном сервере одновременно.

OpenStack: Облачная платформа

OpenStack — это платформа с открытым исходным кодом, которая позволяет компаниям создать собственное облако, аналогичное облакам Amazon или Google. Она объединяет в себе разные компоненты для управления серверами, хранением данных и сетями. Самым популярным гипервизором для OpenStack является KVM, благодаря своей высокой производительности и поддержке Linux. С этого момента мы и начинаем понимать суть связки KVM + OpenStack.

Основные моменты:

  • OpenStack — это набор инструментов для создания и управления облачными инфраструктурами.

  • Он позволяет автоматизировать создание виртуальных машин, сетей, хранилищ и других ресурсов.

  • OpenStack поддерживает работу с различными гипервизорами, включая KVM.

Как работает связка KVM и OpenStack

Теперь поймем как эти две технологии KVM и OpenStack работают вместе.

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

Основные моменты:

  • OpenStack использует KVM как гипервизор для управления виртуальными машинами.

  • KVM предоставляет интерфейс низкого уровня для работы с ВМ, а OpenStack автоматически управляет их созданием, запуском, остановкой и удалением.

  • Такая связка позволяет легко масштабировать инфраструктуру и управлять большим количеством серверов и виртуальных машин через веб-интерфейс.

Преимущества использования KVM с OpenStack

Здесь перечислю несколько ключевых преимуществ нашей связки.

  1. Открытый исходный код. Оба решения — OpenStack и KVM — имеют открытый исходный код, что даёт гибкость в настройке и позволяет избежать зависимости от одного вендора.

  2. Высокая производительность. KVM предоставляет производительность близкую к "нативной" работе железа, а OpenStack эффективно управляет большими кластерами серверов.

  3. Широкие возможности для масштабирования. OpenStack позволяет легко добавлять новые серверы в кластер, а KVM гарантирует стабильную работу ВМ даже при высокой нагрузке.

Какие модули есть в OpenStack

OpenStack состоит из множества модулей (сервисов), которые обеспечивают управление различными аспектами облачной инфраструктуры, такими как вычислительные ресурсы, сети, хранилища и безопасность. Перечислю основные модули OpenStack:

1. Compute (Nova)

  • Nova — сервис для управления виртуальными машинами (инстансами). Это главный компонент для запуска и управления виртуальными серверами.

  • Поддерживает различные гипервизоры, такие как KVM, QEMU, Xen, Hyper-V, VMware и другие.

2. Networking (Neutron)

  • Neutron отвечает за создание и управление сетями в OpenStack. Позволяет создавать виртуальные сети, подсети, маршрутизаторы, балансировщики нагрузки, а также управлять сетевыми политиками и безопасностью.

  • Поддерживает интеграцию с SDN (Software-Defined Networking) и сетевыми плагинами от разных вендоров.

3. Block Storage (Cinder)

  • Cinder предоставляет блочные хранилища для виртуальных машин, такие как тома, которые можно подключить к инстансам. Позволяет создавать, удалять и управлять блочными устройствами.

  • Может интегрироваться с различными системами хранения данных, такими как Ceph, NetApp, EMC и другие.

4. Object Storage (Swift)

  • Swift — объектное хранилище, предназначенное для хранения больших объемов данных. Это распределённое и масштабируемое хранилище для объектов (файлов), которое обеспечивает высокий уровень доступности и репликации данных.

  • Применяется для хранения резервных копий, архивов, мультимедиа и других объектов, которые могут быть доступны через API.

5. Identity Service (Keystone)

  • Keystone — это сервис аутентификации и авторизации пользователей и сервисов OpenStack. Keystone управляет пользователями, ролями, проектами (тенантами) и сервисами, предоставляя единую точку входа для всех модулей.

  • Keystone также управляет API-токенами и доступом на основе ролей (RBAC).

6. Image Service (Glance)

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

  • Поддерживает различные форматы образов, такие как RAW, QCOW2, VDI и VMDK.

7. Dashboard (Horizon)

  • Horizon — это веб-интерфейс для управления облаком OpenStack. Через Horizon пользователи могут управлять инстансами, сетями, хранилищем и другими сервисами.

  • Предоставляет удобный интерфейс для конечных пользователей и администраторов.

8. Orchestration (Heat)

  • Heat — сервис оркестрации, который позволяет автоматизировать развертывание и управление инфраструктурой, используя шаблоны (темплейты). С его помощью можно описать сложные структуры виртуальных машин, сетей и хранилищ.

  • Работает по аналогии с AWS CloudFormation.

9. Telemetry (Ceilometer)

  • Ceilometer — сервис для сбора данных о работе всех компонентов OpenStack, включая использование ресурсов (CPU, диски, сети). Эти данные могут использоваться для биллинга, мониторинга и аналитики.

  • Позволяет отслеживать использование ресурсов для отчетности и расчета затрат.

10. Database as a Service (Trove)

  • Trove — сервис, который предоставляет базы данных как услугу (DBaaS). Он упрощает развёртывание и управление базами данных, такими как MySQL, PostgreSQL и другие.

  • Trove автоматизирует развертывание, управление и масштабирование баз данных.

11. Data Processing (Sahara)

  • Sahara — сервис для управления большими данными (Big Data). Он упрощает развертывание кластеров Hadoop, Spark и других платформ для обработки данных на базе OpenStack.

  • Используется для выполнения задач по обработке данных в распределённых кластерах.

12. Bare Metal Provisioning (Ironic)

  • Ironic — сервис для управления физическими серверами (bare-metal). Он позволяет автоматически развертывать операционные системы на физических серверах, используя их как часть облачной инфраструктуры.

  • Это удобно для тех случаев, когда нужны реальные серверы, а не виртуальные машины.

13. DNS as a Service (Designate)

  • Designate — сервис для управления DNS-зонами и записями. Это позволяет организовать работу с доменными именами в облаке, автоматизируя создание DNS-записей для инстансов и других ресурсов.

14. Shared File System (Manila)

  • Manila — сервис для управления файловыми системами, позволяющий предоставлять общий доступ к файловым системам для нескольких виртуальных машин. Это аналог блочных и объектных хранилищ, но для файлового уровня.

15. Key Management (Barbican)

  • Barbican — сервис для управления секретами и ключами шифрования. Он обеспечивает безопасное хранение и управление секретными данными, такими как ключи шифрования, сертификаты и пароли.

16. Messaging Service (Zaqar)

  • Zaqar — это сервис для организации очередей сообщений между сервисами и приложениями в OpenStack. Позволяет организовать масштабируемую и надежную передачу сообщений между компонентами приложений.

17. Container Orchestration (Magnum)

  • Magnum — сервис для управления контейнерами в OpenStack. Он предоставляет возможность развертывания и управления контейнерными оркестраторами, такими как Kubernetes, Docker Swarm и Mesos, в среде OpenStack.

18. Secret Storage (Castellan)

  • Castellan — библиотека для управления секретами и ключами. Это вспомогательный модуль, который часто используется другими сервисами для безопасного хранения данных.

    Полный список тут.

Ключевые отличия между OpenStack и KVM

Сведем теперь ранее озвученные тезисы в единую таблицу для лучшего усвоения материала.

Параметры

OpenStack

KVM

Тип

Full cloud management platform

Bare-metal гипервизор

Основное применение

Управление облачной инфраструктурой

Виртуализация физических серверов

Область управления

Управляет целыми облачными средами

Управляет виртуализацией отдельных серверов

Масштабируемость

Высоко масштабируемый для крупных развертываний

Масштабируемый, но в первую очередь для отдельных серверов

Интегрируемость

Интегрируется с различными облачными платформами и гипервизорами

Интегрируется напрямую с ядром Linux

Сложность

Более сложный, требует оркестровки нескольких услуг

Более простой, сфокусированный на виртуализации

Место в инфраструктуре

Управление верхнего уровня

Низкий уровень виртуализации

источник таблицы тут.

Заключение

Здесь наверно стоит еще раз сказать что связка KVM и OpenStack — это мощный инструмент для создания частных облаков и виртуализированных инфраструктур, с достаточно большой долей использования на рынке России. Базовые понятия из данной статьи я полагаю должен знать любой начинающий сисадмин, DevOps, MLOps, прочий опс или сетевой инженер. Данная технология является востребованной в современных IT-решениях.

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

p.s.

не смог удержаться....

Добавлю короткую пошаговую инструкцию по начальной установке OpenStack с KVM, чтобы у вас было представление о процессе настройки.

  1. Установка KVM на сервер:

    sudo apt install qemu-kvm libvirt-bin virtinst
  2. Установка и настройка OpenStack. Для начинающих лучшим вариантом будет использование автоматизированных инструментов, например DevStack или MicroStack:

    sudo snap install microstack --devmode --beta
    microstack init
  3. Запуск первой виртуальной машины через панель управления Horizon (веб-интерфейс OpenStack) или с помощью CLI-команд.

Комментарии (12)


  1. outlingo
    09.10.2024 15:26

    Опенстек (точнее nova) не работает с KVM. Нова работает с libvirt а уже он запускает ВМ "как настроено". То есть в теории вы например можете запускать ВМ не в KVM а в Xen или (прости господь) в OpenVZ например


    1. kon_ov Автор
      09.10.2024 15:26

      Действительно, OpenStack Nova напрямую не взаимодействует с KVM. Nova использует libvirt как промежуточный слой для управления гипервизорами, и через libvirt можно подключить различные гипервизоры, такие как KVM, Xen, QEMU, LXC, OpenVZ и другие. Однако KVM это наиболее часто используемый гипервизор в OpenStack. KVM — это один из гипервизоров, с которым libvirt может работать, и он используется по умолчанию в большинстве развертываний OpenStack


      1. Belen
        09.10.2024 15:26

        И все же корректнее будет QEMU-KVM


        1. kon_ov Автор
          09.10.2024 15:26

          Соглашусь, дополню KVM предоставляет функции виртуализации на уровне ядра Linux, а QEMU(Quick EMUlator) фактически выступает в роли эмулятора, который запускает виртуальные машины и предоставляет возможность их виртуализации и эмуляции. Но я хотел немного упростить, но сейчас уже понял что публика здесь достаточно иссушенная :) буду думать как это все уложить сюда.


  1. jingvar
    09.10.2024 15:26

    За такие статьи хоть деньги платят?

    Просто все в кучу.


    1. kon_ov Автор
      09.10.2024 15:26

      Старался избегать куч и примитизировать. Но любые конструктивные советы внему и отрефлексирую.


  1. ZimniY
    09.10.2024 15:26

    Такое ощущение, что и статью и комментарии писала нейросеть.


    1. kon_ov Автор
      09.10.2024 15:26

      Я хотел написать сухим языком, только основные моменты, давайте вернемся к конструктивной критике, пойдем по схеме "что нет так, чего добавить".


  1. AlexHighTower
    09.10.2024 15:26

    А для личного использования, есть ли простые системы для настройки\запуска\мониторинга ВМ в связке qemu-kvm?

    пробовал Kimchi и WebVirtCloud - не зашли, обе старые и на мой взгляд кривые

    есть ли что то чтобы работало через веб, давало возможность создавать вм + vnc к ним? и желательно чтобы в докер контейнере запустить и не плодить кучу зависимостей на хосте


    1. kon_ov Автор
      09.10.2024 15:26

      Что касается докера, из известного мне, можно попробовать например: Virt-Manager, Cockpit. Это когда ты хочешь хоть какой-то графический интерфейс, вообще хороший топик для еще одной статьи, более технической! за которую меня не лишат кармы как за эту статью ))


      1. AlexHighTower
        09.10.2024 15:26

        спасибо, почитал, попробую оба )
        и жду более техническую статью )))


      1. Antonzlo
        09.10.2024 15:26

        Cockpit к сожалению забросили интеграцию докер в пользу podman, вроде замена, а у меня что-то не заработало как надо