Что характерно для контейнерной виртуализации
Перейти к содержимому

Что характерно для контейнерной виртуализации

  • автор:

Чем отличается контейнеризация от виртуализации

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

Что такое контейнеризация: обзор технологии

Контейнеризацией называется технология, которая позволяет упаковывать и запускать приложения со всеми их зависимостями в изолированных средах (контейнерах). Контейнеры представляют собой легковесные и переносимые программные пакеты, содержащие все необходимое для работы автономного приложения: сторонний код, библиотеки, системные службы, настройки. Главным отличием контейнеризации от виртуализации считается то, что создаваемые единицы развертывания (контейнеры) функционируют на базе уже установленной операционной системы. То есть они все работают на одном ядре ОС и — изолированно — используют только необходимую часть ее ресурсов для корректной работы приложения.

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

Что такое виртуализация: обзор технологии

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

Каждая ВМ имеет свой набор вычислительных ресурсов, составляющих часть той мощности, что фактически имеется на «железе». У нее свое хранилище, свои ЦП и объем оперативной памяти. Различие между ВМ и контейнером заключается, главным образом, в том, что первая имитирует полностью функциональную ОС, внутри которой при необходимости можно развернуть и запустить второй. К популярным гипервизорам относят VMware, KVM, Hyper-V, OpenVZ. В зависимости от выбранного вида виртуализации виртуальная машина будет предоставлять разный доступ к системному ядру, но основные функции управления и доступа сохранятся. ВМ легко перемещаются между серверами в кластере для балансировки нагрузки — в отличие от контейнеров, которые нужно сворачивать и разворачивать заново с помощью платформ оркестрации.

Разница между виртуализацией и контейнеризацией

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

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

С этими особенностями связана и разница в механизмах развертывания, хранения данных, в процессах обновления и взаимодействия с ОС и пр.

Заключение

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

Похожие статьи

CDN: что это простыми словами

Тяжесть сайтов увеличивается с каждым годом. Для сравнения: в 2018 году средний вес веб-страниц составлял 1,8 Мб, а в первом полугодии 2023 году достиг 2,3 Мб. При этом пользователи не спешат снижать требования к скорости загрузки сайта и покидают его, если контент не успевает появиться в течение 3 секунд. Согласно исследованиям Google, такое поведение характерно для 53% пользователей. Поведенческие показатели падают, а вместе с ними ухудшается ранжирование сайта в поисковых системах. Если тяжелый сайт находится далеко от части своих целевых посетителей, то для них время ожидания контента может достигнуть еще более критичных значений. Процент отказов продолжит расти с каждой дополнительной секундой до загрузки страницы. Для онлайн-бизнеса, который имеет клиентов по всей стране и за ее пределами, это грозит нулевой конверсией и потерей дохода. Решением проблемы медленной работы сайта является content delivery network (сеть доставки содержимого). В статье рассказываем о том, что такое CDN, когда использовать технологию и что выбрать в качестве альтернативы.

Как выбрать операционную систему для сервера

Операционной системой (ОС) называется программное обеспечение, которое предоставляет интерфейс для взаимодействия с физическими компонентами компьютера. Серверная ОС — особый вид такого ПО, предназначенный для управления большими объемами ресурсов и совершения более сложных вычислений, чем предусмотрено в «домашних» системах, а также для удаленной работы в многопользовательском режиме. Выбору операционной системы следует уделять особое внимание, поскольку она станет фундаментом, на котором будет работать весь серверный стек ПО. От нее зависит производительность, безопасность и управляемость сервера. В статье мы рассказываем о популярных ОС для серверов и объясняем, как их выбирать.

Что такое контейнеризация

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

Нажмите дважды, чтобы увеличить

Контейнерная виртуализация: преимущества и проблемы безопасности

Сегодня контейнеры массово используют для разработки и развертывания приложений, а само понятие стало таким же распространенным, как «виртуальная машина», «облако» или «сервер».

Хотя контейнеры и технологии контейнеризации были известны достаточно давно, настоящую популярность они получили после появления в 2013 г. платформы Docker, связанного с ней активного сообщества пользователей и старта инициативы OCI (Open Container Initiative). Помимо ряда явных преимуществ, у контейнеров есть недостатки и уязвимости, которыми могут воспользоваться в своих целях киберпреступники. Поэтому разговор пойдет не только о самих контейнерах, но и о возможных путях их защиты от хакеров.

Преимущества контейнеров

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

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

К другим преимуществам технологии контейнеризации стоит отнести активное сообщество. Вследствие популярности этого направления практически любая проблема, с которой столкнулся разработчик, либо уже решена кем-то другим и описана на форумах, либо быстро найдет свое решение. По той же причине в Сети хватает публичных библиотек-репозиториев с контейнерами, а над совершенствованием экосистемы контейнерной виртуализации и инструментами для разработки и управления ими трудится огромное количество специалистов со всего мира. Причем многие решения касаются автоматизации процессов, которые позволяют построить цепочки непрерывной интеграции, развертывания и доставки (Continuous Integration, Continuous Delivery/Deployment, CI/CD) практически без участия пользователей.

Недостатки контейнеров и угрозы безопасности

Среди основных недостатков контейнеров следует назвать повышенную сложность управления большим их числом в системе (которого легко достичь из-за малого веса самих контейнеров). Для решения этой задачи часто применяются дополнительные инструменты, например Kubernetes. Также в рамках одной системы можно использовать только контейнеры, построенные для конкретной архитектуры, например для ОС Windows, поскольку все они задействуют ядро самой системы, а не гостевые ОС, как в виртуальных машинах. При этом для ресурсоемких приложений будет эффективней использовать не контейнеры или те же виртуальные машины, а традиционный сервер с прямым доступом к его ресурсам.

К явным угрозам безопасности можно отнести публичные репозитории, которые помогают развивать технологии контейнеризации. Команда исследователей Cisco Talos в мае нынешнего года обнаружила, что на портале Docker Hub уже три года контейнеры Alpine Linux распространялись с пустым паролем суперпользования, а дальнейшие исследования Kenna Security подтвердили, что эта же проблема касается примерно 20% всех контейнеров на том же ресурсе. Кроме того, взлом публичного реестра образов и добавление злоумышленниками собственных библиотек позволят заразить все серверы, в кэше которых хранится этот образ, поскольку по умолчанию серверы таких реестров являются доверенными ресурсами.

С уже упоминавшегося выше Docker Hub в июне 2018 года было удалено 17 таких контейнеров, но количество их загрузок за это время перевалило за 1 млн. Более того, в конце апреля 2019 года репозиторий был взломан и в руки хакеров попали данные свыше 190 тыс. пользователей, что показывает неослабевающий интерес злоумышленников к этой сфере. А в конце мая 2019 года прошла очередная волна распространения контейнеров с криптомайнером, использующим API Docker. Осенью 2018 года из каталога PyPi также были удалены зараженные контейнеры, причем вредоносный код в них мог даже подменять адреса Bitcoin-кошельков жертв на нужные хакерам.

Рекомендации по кибербезопасности

Современный непрерывный процесс разработки и развертывания приложений, т.е. тот самый CI/CD, явно нуждается в переходе от обеспечения безопасности «по факту» к внедрению инструментов безопасности в сам процесс разработки. По данным Gartner, в этом году уже в более чем 70% корпоративных процессов разработки будут внедряться инструменты для автоматизированной оценки уязвимостей и настроек различных компонентов и пакетов из внешних open source- и коммерческих источников.

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

  • обеспечить проверку безопасности на всех стадиях разработки, от кодирования до контейнеризации приложения;
  • максимально автоматизировать эту процедуру проверки;
  • распределить уровни доступа к механизмам проверки безопасности в зависимости от конкретной роли каждого участника разработки;
  • обеспечить поддержку Docker Registry V2 API для сканирования образов контейнеров в реестрах.

Михаил Кондрашин, технический директор Trend Micro в России и СНГ

Что такое контейнер и контейнерная виртуализация

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

В этой статье мы разберём, что такое контейнеризация и для чего её используют.

Прародителем контейнеризации была технология виртуализации. Это возможность запуска нескольких операционных систем на одном физическом устройстве. Виртуализация использует ресурсы устройства (память, процессор, устройство ввода и вывода), но при этом работает как отдельный компьютер со своей операционной системой. Чтобы создать на компьютере или сервере виртуальную среду, нужно установить программу — виртуальную машину. Примерами таких программ являются VirtualBox, Parallels Desktop, Microsoft Hyper-V.

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

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

Контейнер ― это помещенный на виртуальный диск файл, в который упаковывается приложение со всеми необходимыми для его работы зависимостями: кодом приложения, средой запуска, системными инструментами, библиотеками и настройками. Он запускается при помощи контейнерного движка (Docker, CRI-O, Railcar, RKT, LXC).

Контейнерный движок ― это программное обеспечение, которое принимает запросы пользователя, скачивает контейнеры и запускает их. Запуск контейнера происходит при помощи API-обращений.

Отличие виртуальной машины от контейнера

Главное отличие ― способ работы. При виртуализации создается полностью отдельная операционная система. При контейнеризации используется ядро операционной системы той машины, на которой открывается контейнер.

Ещё одно значимое отличие ― размер и скорость работы. Размер виртуальной машины может составлять несколько гигабайт. Также для загрузки операционной системы и запуска приложений, которые в них размещены, требуется много времени. Контейнеры более лёгкие — их размер измеряется в мегабайтах. По сравнению с виртуальными машинами, контейнеры могут запускаться намного быстрее.

Для чего используют контейнерные системы

Удобная работа с кодом при создании нового продукта. Некоторые разработчики работают удалённо на локальных компьютерах. Нередко им приходится пересылать код программы. Чтобы упростить процесс, весь код можно собрать в один контейнер. Далее из этого контейнера будет не только легко получить программу, но и протестировать её на компьютере без ущерба для основной ОС.

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

Преимущества контейнерной виртуализации

  1. Скорость работы. Как говорилось раньше, контейнеры «весят» меньше, чем виртуальные машины, что позволяет устанавливать и запускать их быстрее, чем машины.
  2. Защита от ошибок. Так как контейнеры изолированы один от другого, ошибки, обновления и изменения в одном контейнере не влияют на другой.
  3. Стандартность. Большинство контейнеров основаны на стандартах, что позволяет им работать в Linux, Microsoft и других системах.
  4. Возможности транспортировки среды. Контейнер упаковывает абсолютно все необходимые данные (сведения о приложениях, операционной системе), которые нужны для запуска. Благодаря этому контейнеры можно легко переносить из одних рабочих сред в другие.

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

  1. Ограниченность архитектуры. Можно использовать только те контейнеры, которые созданы для конкретной архитектуры. Например, если контейнер создан для Linux, то его нельзя будет использовать для Windows. Также стоит отметить, что контейнеризация Linux более распространена среди разработчиков, поэтому найти контейнеры программ для других операционных систем сложнее.
  2. Низкая безопасность. Контейнерная виртуализация распространяется в основном при помощи публичных репозиториев. Злоумышленники могут вставить свои библиотеки, которые позволят им заразить сервер пользователя. На уязвимость также влияет более низкая изоляция в отличие от виртуальных машин. Из-за этого зараженный контейнер может атаковать основную операционную систему компьютера и повредить её.
  3. Новизна технологии. Этот вид виртуализации только начал свой путь, поэтому при работе с контейнерами могут возникать трудности. Для решения проблем можно задавать вопросы на форумах или обращаться к технической поддержке сервиса, который предоставляет услугу контейнеризации.

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

Популярные статьи

  • Как указать (изменить) DNS-серверы для домена
  • Я зарегистрировал домен, что дальше
  • Как добавить запись типа A, AAAA, CNAME, MX, TXT, SRV для своего домена
  • Что такое редирект: виды и возможности настройки
  • Как создать почту со своим доменом

Упакуем все: зачем нужны контейнеры и как с ними работать в Big Data

Мы уже рассказывали про достоинства и недостатки самой популярной DevOps-технологии 2019 года — платформы управления контейнерами Kubernetes для Big Data систем. Сегодня поговорим, зачем вообще нужны контейнеры, чем они отличаются от виртуальных машин, каковы их плюсы и минусы, а также для чего нужна их оркестрация.

Что такое контейнеризация приложений и как это работает

Контейнеризация (виртуализация на уровне операционной системы, контейнерная или зонная виртуализация) — это метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя вместо одного. С точки зрения пользователя эти экземпляры (контейнеры или зоны) полностью идентичны отдельной операционной системе. Ядро обеспечивает полную изолированность контейнеров, поэтому приложения из разных контейнеров не могут воздействовать друг на друга [1].

В неработающем состоянии контейнер — это файл (набор файлов) на диске. При запуске контейнера контейнерный движок (Docker, CRI-O, Railcar, RKT, LXC) распаковывает образ контейнера с нужными файлами и метаданными, передавая их ядру операционной системы (ОС).

Контейнерный движок — это программное обеспечение, принимающее запросы пользователя, в т.ч. параметры командной строки, скачивающая образы контейнеров и запускающая их. Запуск контейнера похож на запуск системного процесса и требует API-обращения к ядру ОС. Такой API-вызов обычно инициирует дополнительную изоляцию и монтирует копию файлов, которые находятся в образе контейнера. При этом с ядром ОС для запуска контейнеризованных процессов связывается среда выполнения контейнеров — низкоуровневый компонент, который обычно используется в составе контейнерного движка, но также может применяться и в ручном режиме для тестирования контейнеров. Среда выполнения контейнеров от контейнерного движка получает точку монтирования контейнера (при тестировании это может быть просто каталог) и метаданные контейнера (при тестировании это может быть собранный вручную файл config.json).

После запуска контейнер становится системным процессом. Процедура запуска контейнеров, а также формат образов контейнеров, хранящихся на диске, определяются и регулируются стандартами. Сегодня наиболее популярным становится стандарт Open Container Initiative (OCI), который задает спецификацию формата образов контейнеров, определяя дисковый формат их хранения, а также метаданные (аппаратная архитектура, операционная система) [2].

Архитектура контейнерной виртуализации

Чем отличается контейнер от виртуальной машины

В отличие от аппаратной виртуализации, когда эмулируется аппаратное окружение и может быть запущено множество гостевых ОС, в контейнере запускается экземпляр ОС только с тем же ядром, что и у исходной (хостовой) операционной системы. Таким образом, все контейнеры узла используют общее ядро. При этом отсутствуют дополнительные накладные расходы ресурсов на эмуляцию виртуального оборудования и запуск полноценного экземпляра ОС, что характерно аппаратной виртуализации. Существуют реализации для на создания практически полноценных экземпляров ОС (Solaris Containers, контейнеры Virtuozzo, OpenVZ), а также варианты изоляции отдельных сервисов с минимальным операционным окружением (jail, Docker) [1], которые наиболее часто используются в Big Data системах с учетом роста популярности микросервисной архитектуры.

Таким образом, контейнеры позволяют уместить гораздо больше приложений на одном физическом сервере, чем любая виртуальная машина, которая занимает гораздо больше системных ресурсов (оперативной памяти и процессорных циклов). В отличие от виртуальной машины, где эмулируется ОС и необходимое виртуальное оборудование, в контейнере размещается только приложение и необходимый минимум системных библиотек. Благодаря этому можно запустить в 2–3 раза больше приложений на одном сервере. Также контейнеризация позволяет создавать портативное и целостное окружение для разработки, тестирования и последующего развертывания, что соответствует подходу DevOps [3].

Виртуальная машина и контейнер: сравнение архитектур

Преимущества и недостатки контейнеров в Big Data

С точки зрения использования контейнеризации приложений в Big Data наиболее значимы следующие достоинства этой технологии [4]:

· стандартизация — благодаря базе открытых стандартов контейнеры могут работать во всех основных дистрибутивах Linux, Microsoft и других популярных ОС;

· независимость контейнера от ресурсов или архитектуры хоста, на котором он работает, облегчает переносимость образа контейнера из одной среды в другую, обеспечивая непрерывный конвейер DevOps-процессов от разработки и тестирования к развертыванию (CI/CD pipeline);

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

· возможность повторного использования — все компоненты, необходимые для запуска приложения, упаковываются в один образ, который может запускаться многократно;

· быстрота развертывания — на создание и запуск контейнера требуется гораздо меньше времени, чем на экземпляр виртуальной машины или настройку полноценного рабочего окружения;

· повышение производительности труда — если каждый микросервис сложной системы упаковать в отдельный контейнер, за который отвечает один разработчик, то можно распараллелить рабочие задачи без взаимных зависимостей и конфликтов;

· упрощение мониторинга — управление версиями контейнерных образов позволяет отслеживать обновления, избегая проблем с синхронизацией.

Тем не менее, при всех вышеотмеченных достоинствах, контейнерной виртуализации свойственны следующие недостатки:

· «упаковка» в контейнер гораздо большего количества ресурсов, чем требуется приложению, что приводит к разрастанию образа и большому размеру контейнера [5];

· проблема с обеспечением информационной безопасности — несмотря на то, что многие системы работы с контейнерами (Kubenetes, Docker и пр.) включают средства защиты от взлома и потери данных, например, изоляция пространства имен, гибкие механизмы сетевых политик и ролевой авторизации пользователей по ключу, а также прочие инструменты, о которых мы подробнее рассказываем в следующей статье, использование контейнеров не всегда безопасно. Например, некоторые важные подсистемы ядра операционной системы Linux функционируют вне контейнера (переферийные устройства, SELinux, Cgroups и вся файловая система внутри системного раздела /sys). Благодаря этому можно взломать операционную систему, если клиент (пользователь или приложение) контейнера имеет root-права [5];

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

Как и у любой технологии, у контейнеризации есть 2 стороны

Зачем нужна оркестрация: как работать со множество контейнеров в Big Data системах

Оркестрация контейнеров в Big Data системах нужна для следующих действий [2]:

· развертывание нескольких контейнеров одновременно в различных средах окружения (на компьютере разработчика, на тестовом и рабочем серверах, в среде аварийного восстановления, в облачном кластере и пр.), что соответствует DevOps-концепции непрерывной разработки, тестирования и поставки программного обеспечения;

· динамическое распределение контейнеров по узлам кластера (балансировка нагрузки);

· постоянный мониторинг состояния контейнеризованных приложений и автоматическая отработка их отказов (перезапуск).

Современный рынок свободного и проприетарного ПО предлагает множество систем оркестрации контейнеров. Наиболее популярными и подходящими для надежных и высоконагруженных Big Data систем считаются Kubernetes, Apache Mesos и Red Hat OpenShift. Для не слишком больших проектов подойдут Docker Swarm, Nomad, Fleet, Aurora. Также заслуживают внимания облачные решения Amazon EC2 Container Service и Microsoft Azure Container Service [6].

Работа множества распределенных сервисов Big Data невозможна без системы оркестрации контейнеров

Источники

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *