stringtranslate.com

Контейнер Linux

Container Linux (ранее CoreOS Linux ) — это прекращенная разработка облегченной операционной системы с открытым исходным кодом на основе ядра Linux , разработанной для предоставления инфраструктуры для кластерных развертываний. Одним из ее направлений была масштабируемость . Как операционная система, Container Linux предоставляла только минимальную функциональность, необходимую для развертывания приложений внутри программных контейнеров , вместе со встроенными механизмами для обнаружения служб и совместного использования конфигурации. [10] [11] [12] [13] [14]

Container Linux разделяет основы с Gentoo Linux , [15] [16] ChromeOS и ChromiumOS через общий комплект разработки программного обеспечения (SDK). Container Linux добавляет новые функциональные возможности и настройки к этой общей основе для поддержки серверного оборудования и вариантов использования. [13] [17] : 7:02  CoreOS была разработана в первую очередь Алексом Полви, Брэндоном Филипсом и Майклом Марино, [12] а ее основные функции доступны в стабильной версии . [18] [19] [20]

Команда CoreOS объявила об окончании поддержки Container Linux 26 мая 2020 года [1], предложив в качестве замены Fedora CoreOS [ 21] и RHEL CoreOS, обе основаны на Red Hat Enterprise Linux .

Обзор

Container Linux не предоставляет менеджер пакетов в качестве способа распределения приложений полезной нагрузки, требуя вместо этого, чтобы все приложения запускались внутри своих контейнеров. Выступая в качестве единого управляющего хоста, экземпляр Container Linux использует базовые функции виртуализации на уровне операционной системы ядра Linux для создания и настройки нескольких контейнеров, которые работают как изолированные системы Linux . Таким образом, разделение ресурсов между контейнерами выполняется через несколько изолированных экземпляров пользовательского пространства , вместо использования гипервизора и предоставления полноценных виртуальных машин . Этот подход опирается на функции cgroups и пространств имен ядра Linux , [22] [23], которые вместе предоставляют возможности ограничивать, учитывать и изолировать использование ресурсов ( ЦП , память, дисковый ввод -вывод и т. д.) для наборов процессов пользовательского пространства . [11] [14] [24]

Первоначально Container Linux использовал Docker исключительно в качестве компонента, обеспечивающего дополнительный уровень абстракции и интерфейса [25] для функций виртуализации на уровне операционной системы ядра Linux, а также предоставляющего стандартизированный формат для контейнеров, который позволяет приложениям работать в различных средах. [11] [24] В декабре 2014 года CoreOS выпустила и начала поддерживать rkt (первоначально выпущенный как Rocket ) в качестве альтернативы Docker, предоставляя через него другой стандартизированный формат образов приложений-контейнеров, связанное определение среды выполнения контейнеров и протокол для обнаружения и извлечения образов контейнеров. [26] [27] [28] [29] CoreOS предоставляет rkt как реализацию так называемой спецификации контейнера приложений (appc), которая описывает требуемые свойства образа контейнера приложений (ACI). CoreOS создала appc и ACI как независимый, управляемый комитетом набор спецификаций [30] [31], направленный на то, чтобы стать частью независимой от поставщиков и операционных систем инициативы Open Container Initiative ( OCI), первоначально названной стандартом контейнеризации Open Container Project (OCP) [32] , который был анонсирован [ кем? ] в июне 2015 года. [33] [34] [35]

Container Linux использует скрипты ebuild из Gentoo Linux для автоматизированной компиляции своих системных компонентов, [15] [16] и использует systemd в качестве основной системы инициализации с тесной интеграцией между systemd и различными внутренними механизмами Container Linux. [11] [36]

Распределение обновлений

Container Linux достигает дополнительной безопасности и надежности обновлений своей операционной системы, используя FastPatch в качестве схемы с двумя разделами для части установки, доступной только для чтения, что означает, что обновления выполняются как единое целое и устанавливаются на пассивный вторичный загрузочный раздел , который становится активным после перезагрузки или kexec . Такой подход позволяет избежать возможных проблем, возникающих при обновлении только определенных частей операционной системы, обеспечивает легкий откат к заведомо стабильной версии операционной системы и позволяет подписывать каждый загрузочный раздел для дополнительной безопасности. [11] [14] [37] Корневой раздел и его корневая файловая система автоматически изменяются для заполнения всего доступного дискового пространства при перезагрузках; в то время как корневой раздел предоставляет дисковое пространство для чтения и записи, сама операционная система монтируется только для чтения в /usr . [38] [39] [40]

Чтобы гарантировать, что только определенная часть кластера перезагружается одновременно при применении обновлений операционной системы, сохраняя ресурсы, необходимые для запуска развернутых приложений, CoreOS предоставляет locksmith в качестве менеджера перезагрузки для Container Linux. [41] Используя locksmith, можно выбирать между различными стратегиями обновления, которые определяются тем, как выполняются перезагрузки на последнем этапе применения обновлений; например, можно настроить, сколько членов кластера могут перезагружаться одновременно. Внутри себя locksmith работает как демон locksmithd , который запускается на членах кластера, в то время как утилита командной строки locksmithctl управляет параметрами конфигурации. [42] [43] Locksmith написан на языке Go и распространяется в соответствии с условиями Apache License 2.0 . [44]

Система распространения обновлений, используемая Container Linux, основана на проекте Google с открытым исходным кодом Omaha , который предоставляет механизм для развертывания обновлений и базовый протокол запроса-ответа на основе XML . [6] [45] [46] Кроме того, CoreOS предоставляет CoreUpdate в качестве веб- панели управления обновлениями в масштабах всего кластера. Операции, доступные через CoreUpdate, включают назначение членов кластера в различные группы, которые совместно используют настраиваемые политики обновления, просмотр общекластерных разбивок версий Container Linux, остановку и перезапуск обновлений и просмотр записанных журналов обновлений. CoreUpdate также предоставляет API на основе HTTP , что позволяет интегрировать его в сторонние утилиты или системы развертывания . [37] [47] [48]

Инфраструктура кластера

Общая иллюстрация архитектуры кластера CoreOS [49]

Container Linux предоставляет etcd, демон, который работает на всех компьютерах в кластере и предоставляет динамический реестр конфигурации, позволяя легко и надежно совместно использовать различные данные конфигурации между членами кластера. [6] [38] Поскольку данные «ключ-значение», хранящиеся в etcd, автоматически распределяются и реплицируются с помощью автоматизированных выборов главного узла и установления консенсуса с использованием алгоритма Raft , все изменения в хранимых данных отражаются во всем кластере, в то время как достигнутая избыточность предотвращает потерю данных из-за сбоев отдельных членов кластера. [29] [50] Помимо управления конфигурацией, etcd также обеспечивает обнаружение служб , позволяя развернутым приложениям объявлять о себе и предлагаемых ими службах. Связь с etcd осуществляется через открытый API на основе REST , который внутренне использует JSON поверх HTTP; API можно использовать напрямую ( например , через curl или wget ) или косвенно через etcdctl , которая является специализированной утилитой командной строки, также поставляемой CoreOS. [11] [14] [51] [52] [53] etcd также используется в программном обеспечении Kubernetes .

Container Linux также предоставляет диспетчер кластера флота , который управляет отдельными экземплярами systemd Container Linux на уровне кластера. С 2017 года «fleet» больше не разрабатывается активно и устарел в пользу Kubernetes. [54] Используя Fleetd , Container Linux создает распределенную систему инициализации , которая связывает отдельные экземпляры systemd и развертывание etcd на уровне кластера ; [50] внутри демон Fleetd взаимодействует с локальными экземплярами systemd через D-Bus , а с развертыванием etcd — через свой открытый API. Использование Fleetd позволяет развертывать один или несколько контейнеров на уровне кластера с более продвинутыми параметрами, включая избыточность , отказоустойчивость , развертывание на определенных членах кластера, зависимости между контейнерами и групповое развертывание контейнеров. Утилита командной строки под названием Fleetctl используется для настройки и мониторинга этой распределенной системы инициализации; [55] внутри он взаимодействует с демоном Fleetd с помощью API на основе JSON поверх HTTP, который также можно использовать напрямую. При локальном использовании на члене кластера fleetctl взаимодействует с локальным экземпляром Fleetd через сокет домена Unix ; при использовании с внешнего хоста используется туннелирование SSH с аутентификацией, предоставляемой через открытые ключи SSH . [56] [57] [58] [59] [60]

Все вышеупомянутые демоны и утилиты командной строки ( etcd , etcdctl , fleetd и fleetctl ) написаны на языке Go и распространяются на условиях Apache License 2.0. [8] [61]

Развертывание

При запуске на выделенном оборудовании Container Linux может быть либо постоянно установлен на локальном хранилище, таком как жесткий диск (HDD) или твердотельный накопитель (SSD), [62] либо загружен удаленно по сети с использованием Preboot Execution Environment (PXE) в целом или iPXE как одной из ее реализаций. [63] [64] CoreOS также поддерживает развертывания на различных платформах виртуализации оборудования , включая Amazon EC2 , DigitalOcean , Google Compute Engine , Microsoft Azure , OpenStack , QEMU / KVM , Vagrant и VMware . [14] [65] [66] [67] Container Linux также может быть установлен на Citrix XenServer, при этом следует отметить, что «шаблон» для CoreOS существует.

Container Linux также может быть развернут через его коммерческий дистрибутив под названием Tectonic , который дополнительно интегрирует Kubernetes от Google в качестве утилиты управления кластером. По состоянию на апрель 2015 года Tectonic планируется предлагать в качестве бета-версии программного обеспечения для избранных клиентов. [30] [68] [69] Кроме того, CoreOS предоставляет Flannel в качестве компонента, реализующего оверлейную сеть , необходимую в первую очередь для интеграции с Kubernetes. [30] [70] [71]

По состоянию на февраль 2015 года Container Linux поддерживает только архитектуру x86-64 . [6]

Производные

После приобретения CoreOS, Inc. [72] в январе 2018 года компания Red Hat объявила [73] , что она объединит CoreOS Container Linux с проектом Red Hat Atomic для создания новой операционной системы Red Hat CoreOS, одновременно объединив сообщество разработчиков ПО с открытым исходным кодом Fedora Project вокруг Fedora CoreOS, объединив технологии обоих предшественников.

6 марта 2018 года Kinvolk GmbH анонсировала [74] Flatcar Container Linux, производную от CoreOS Container Linux. Это отслеживает альфа-, бета- и стабильные выпуски CoreOS, а экспериментальный канал Edge был добавлен в мае 2019 года. [75]

Прием

LWN.net сделал обзор CoreOS в 2014 году: [76]

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

Смотрите также

Ссылки

  1. ^ ab "Объявление об окончании поддержки CoreOS Container Linux". coreos.com . Получено 16 августа 2020 г. .
  2. ^ "coreos/manifest: Выпуск v94.0.0 (Container Linux v94.0.0)". github.com . 3 октября 2013 г. . Получено 22 сентября 2014 г. .
  3. ^ "CoreOS Container Linux Release Notes # Stable channel". coreos.com . 22 мая 2020 г. Архивировано из оригинала 11 ноября 2020 г. Получено 22 мая 2020 г.
  4. ^ "CoreOS Container Linux Release Notes # Beta channel". coreos.com . 22 мая 2020 г. Архивировано из оригинала 11 ноября 2020 г. Получено 22 мая 2020 г.
  5. ^ "CoreOS Container Linux Release Notes # Alpha channel". coreos.com . 22 мая 2020 г. Архивировано из оригинала 11 ноября 2020 г. Получено 22 мая 2020 г.
  6. ^ abcd Тимоти Прикетт Морган (15 февраля 2015 г.). "CoreOS Hyperscales Linux By Making It Invisible". nextplatform.com . Получено 14 июня 2015 г. .
  7. ^ "CoreOS Pilot Agreement". coreos.com . 13 марта 2014 г. Архивировано из оригинала 12 сентября 2014 г. Получено 26 марта 2014 г.
  8. ^ ab "coreos/etcd: etcd/LICENSE at master". github.com . 31 июля 2013 г. . Получено 26 марта 2014 г. .
  9. ^ "CoreOS Container Linux 2514.1.0 Documentation". coreos.com . 21 января 2021 г. Архивировано из оригинала 21 января 2021 г. Получено 21 января 2021 г.
  10. ^ "CoreOS Linux теперь Container Linux". coreos.com . Получено 20 декабря 2016 г. .
  11. ^ abcdef Либби Кларк (9 сентября 2013 г.). "Brandon Philips: How the CoreOS Linux Distro Uses Cgroups". Linux.com . Архивировано из оригинала 22 февраля 2014 г. . Получено 13 февраля 2014 г. .
  12. ^ ab Cade Metz (21 августа 2013 г.). «Linux-хакеры перестраивают Интернет из гаража в Кремниевой долине». Wired . Получено 13 февраля 2014 г.
  13. ^ ab "CoreOS – новый подход к серверным системам на базе Linux". itnews2day.com . 22 августа 2013 г. Архивировано из оригинала 29 ноября 2014 г. Получено 26 марта 2014 г.
  14. ^ abcde "CoreOS documentation: Using CoreOS". coreos.com . Архивировано из оригинала 23 февраля 2014 г. Получено 13 февраля 2014 г.
  15. ^ ab "Сборка образов разработки: обновление portage-stable ebuilds из Gentoo". coreos.com . Архивировано из оригинала 14 июля 2017 г. . Получено 24 мая 2016 г. .
  16. ^ ab "Дистрибутивы на основе Gentoo". gentoo.org . 25 марта 2016 г. . Получено 24 мая 2016 г. .
  17. Брайан Харрингтон (8 июля 2014 г.). «CoreOS: Анатомия обновления CoreOS». youtube.com . Rackspace . Получено 25 июля 2014 г. .
  18. Алекс Полви (25 июля 2014 г.). "CoreOS Stable Release". coreos.com . Получено 28 августа 2014 г. .
  19. ^ "CoreOS Release Notes". coreos.com . Архивировано из оригинала 11 ноября 2020 г. Получено 28 августа 2014 г.
  20. Brandon Philips (28 января 2015 г.). "etcd 2.0 Release – First Major Stable Release". coreos.com . Получено 14 июня 2015 г. .
  21. ^ "Fedora CoreOS Documentation :: Fedora Docs Site". docs.fedoraproject.org . Получено 16 августа 2020 г. .
  22. Джонатан Корбет (29 октября 2007 г.). «Записки из контейнера». LWN.net . Получено 3 июля 2016 г.
  23. Джейк Эдж (19 ноября 2014 г.). «Пространства имен контрольной группы». LWN.net . Получено 3 июля 2016 г. .
  24. ^ ab "CoreOS documentation: Using Docker with CoreOS". coreos.com . Архивировано из оригинала 4 августа 2016 г. . Получено 14 июня 2015 г. .
  25. ^ "Docker 0.9: Знакомство с драйверами выполнения и libcontainer". docker.com . 10 марта 2014 г. . Получено 20 января 2015 г. .
  26. Либби Кларк (30 января 2015 г.). «Соучредитель CoreOS Алекс Полви рассказывает о контейнерах, Rocket против Docker и многом другом». Linux.com . Получено 14 июня 2015 г.
  27. ^ Чарльз Бабкок (20 февраля 2015 г.). «Rocket Containers: How CoreOS Plans To Challenge Docker». informationweek.com . Получено 14 июня 2015 г. .
  28. ^ Алекс Полви (1 декабря 2014 г.). "CoreOS создает среду выполнения контейнера, rkt". coreos.com . Получено 14 июня 2015 г. .
  29. ^ ab Джош Беркус (4 февраля 2015 г.). "Новые релизы etcd, appc и Rocket из CoreOS". LWN.net . Получено 22 июня 2015 г. .
  30. ^ abc Джош Беркус (13 мая 2015 г.). "CoreOS Fest и мир контейнеров, часть 1". LWN.net . Получено 22 июня 2015 г. .
  31. ^ Натан Уиллис (3 декабря 2014 г.). «Система контейнеризации Rocket». LWN.net . Получено 22 июня 2015 г.
  32. ^ МакАллистер, Нил (22 июня 2015 г.). «Docker и приятели представляют стандарты org для программных контейнеров». Центр обработки данных. The Register . Получено 19 января 2017 г. Анонсированный на конференции DockerCon в Сан-Франциско в понедельник, проект Open Container Project (OCP) будет поддерживать и развивать общую среду выполнения контейнеров и формат образов, частично основанный на коде и спецификациях, предоставленных Docker.
  33. ^ Фредерик Лардинуа (22 июня 2015 г.). «Docker, CoreOS, Google, Microsoft, Amazon и другие объединяются для разработки общего стандарта контейнеров». TechCrunch . Получено 24 июня 2015 г.
  34. ^ «Лидеры отрасли объединяются для создания проекта по стандартам открытых контейнеров». opencontainers.org . 22 июня 2015 г. Архивировано из оригинала 13 августа 2015 г. Получено 24 июня 2015 г.
  35. ^ Нил МакАлистер (22 июля 2015 г.). «Open Container Project переименовывается, заявляет, что стандарт появится через несколько недель: Linux Foundation, Docker и друзья выбирают Open Container Initiative». The Register . Получено 29 января 2016 г.
  36. ^ "Документация CoreOS: Использование systemd с CoreOS". coreos.com . Архивировано из оригинала 14 февраля 2014 г. . Получено 13 февраля 2014 г. .
  37. ^ ab "Документация CoreOS: обновления и исправления". coreos.com . Архивировано из оригинала 14 февраля 2014 г. . Получено 27 февраля 2015 г. .
  38. ^ ab Фил Уилан (28 августа 2013 г.). "Алекс Полви объясняет CoreOS". activestate.com . Архивировано из оригинала 24 февраля 2015 г. . Получено 7 мая 2015 г. .
  39. ^ "Документация CoreOS: Добавление дискового пространства на машину CoreOS". coreos.com . Получено 27 февраля 2015 г. .
  40. ^ Алекс Полви (27 марта 2014 г.). «Основное обновление: btrfs, Docker 0.9, добавление пользователей, возможность записи в /etc и многое другое!». coreos.com . Получено 27 февраля 2015 г. .
  41. ^ «Простое введение в CoreOS с генеральным директором Алексом Полви и техническим директором Брэндоном Филипсом». centurylinklabs.com . 6 июня 2014 г. Архивировано из оригинала 22 июня 2015 г. Получено 22 июня 2015 г.
  42. ^ "Документация CoreOS: стратегии обновления". coreos.com . Получено 17 апреля 2015 г. .
  43. ^ "coreos/locksmith: locksmith/README.md at master". github.com . 1 февраля 2015 г. . Получено 17 апреля 2015 г. .
  44. ^ "coreos/locksmith: locksmith/LICENSE at master". github.com . 19 января 2014 г. . Получено 17 апреля 2015 г. .
  45. ^ "Omaha – установщик программного обеспечения и средство автоматического обновления для Windows". code.google.com . Получено 11 октября 2014 г. .
  46. ^ "Обзор Омахи". omaha.googlecode.com . 23 сентября 2009 г. Архивировано из оригинала 6 мая 2009 г. Получено 11 октября 2014 г.
  47. ^ "Package omaha". godoc.org . 24 июня 2014 г. . Получено 4 июля 2014 г. .
  48. ^ "Документация CoreOS: CoreUpdate". coreos.com . Получено 4 июля 2014 г. .
  49. Марк Муди (16 мая 2014 г.). «CoreOS + Docker Development Environment Demo». github.com . Получено 16 апреля 2015 г. .
  50. ^ ab Jonathan Corbet (22 октября 2014 г.). "Etcd and fleet". LWN.net . Получено 22 июня 2015 г. .
  51. ^ "Документация CoreOS: Использование etcd с CoreOS". coreos.com . Получено 13 февраля 2014 г. .
  52. ^ "Документация CoreOS: Начало работы с etcd". coreos.com . Получено 13 февраля 2014 г. .
  53. Брэндон Филипс (15 января 2014 г.). "etcd @ GoSF". speakerdeck.com . Получено 13 февраля 2014 г. .
  54. ^ Вуд, Джош. «Оркестровка контейнеров: переход от флота к Kubernetes». coreos..com . CoreOS.
  55. ^ Джастин Эллингвуд (12 сентября 2014 г.). «Как использовать Fleet и Fleetctl для управления кластером CoreOS». digitalocean.com . Получено 22 июня 2015 г. .
  56. ^ "Документация CoreOS: Запуск контейнеров с флотом". coreos.com . Получено 3 апреля 2014 г. .
  57. ^ "Документация CoreOS: Использование клиента". coreos.com . Получено 3 апреля 2014 г. .
  58. ^ "coreos/fleet: fleet/README.md at master". github.com . 18 февраля 2014 г. Получено 3 апреля 2014 г.
  59. ^ "coreos/fleet: fleet/Documentation/deployment-and-configuration.md at master (Deploying fleet)". github.com . 14 апреля 2015 г. . Получено 17 апреля 2015 г. .
  60. ^ "coreos/fleet: fleet/Documentation/api-v1.md (fleet API v1)". github.com . 29 октября 2014 г. . Получено 17 апреля 2015 г. .
  61. ^ "coreos/fleet: fleet/LICENSE at master". github.com . 6 февраля 2014 г. Получено 3 апреля 2014 г.
  62. ^ "Документация CoreOS: Установка CoreOS на диск". coreos.com . Получено 13 февраля 2014 г. .
  63. ^ "Документация CoreOS: Загрузка CoreOS через PXE". coreos.com . Получено 13 февраля 2014 г. .
  64. ^ "Документация CoreOS: Загрузка CoreOS через iPXE". coreos.com . Получено 13 февраля 2014 г. .
  65. ^ Алекс Кроуфорд (5 сентября 2014 г.). "Образ CoreOS теперь доступен на DigitalOcean". coreos.com . Получено 5 сентября 2014 г. .
  66. Джек Кларк (23 мая 2014 г.). «Google внедряет футуристическое программное обеспечение Linux CoreOS в свое облако». The Register . Получено 26 мая 2014 г.
  67. ^ Алекс Кроуфорд (20 октября 2014 г.). «CoreOS теперь доступна на Microsoft Azure». coreos.com . Получено 22 октября 2014 г. .
  68. ^ Стивен Дж. Воган-Николс (6 апреля 2015 г.). «CoreOS приносит Kubernetes от Google на предприятие». ZDNet . Получено 29 апреля 2015 г.
  69. ^ Бен Кепес (6 апреля 2015 г.). «CoreOS и Google играют в оборону, Docker — жертва?». Forbes . Получено 29 апреля 2015 г.
  70. Евгений Якубович (28 августа 2014 г.). «Введение в flannel: сеть наложений на основе etcd для контейнеров». coreos.com . Получено 22 июня 2015 г.
  71. ^ "Учебник по использованию CoreOS Flannel для Docker". slideshare.net . Ноябрь 2014 г. Получено 22 июня 2015 г.
  72. ^ Рософф, Мэтт (30 января 2018 г.). «Red Hat платит 250 миллионов долларов за CoreOS, стартап, продающий разработанную Google технологию». CNBC . Получено 6 июня 2019 г.
  73. ^ «Fedora CoreOS, Red Hat CoreOS и будущее Container Linux | CoreOS». coreos.com . Получено 6 июня 2019 г. .
  74. ^ "Анонс проекта Flatcar Linux | Kinvolk". kinvolk.io . 6 марта 2018 г. . Получено 6 июня 2019 г. .
  75. ^ «Представляем Flatcar Linux Edge Channel | Kinvolk». kinvolk.io . 15 мая 2019 г. . Получено 6 июня 2019 г. .
  76. ^ CoreOS: Другой тип дистрибутива Linux [LWN.net]

Внешние ссылки