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] , целью которого было стать частью независимой от поставщика и операционной системы инициативы открытых контейнеров, или 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 год «флот» больше не активно развивается и устарел в пользу Kubernetes . [54] Используя флот , Container Linux создает распределенную систему инициализации , которая связывает воедино отдельные экземпляры systemd и развертывание etcd в масштабе всего кластера ; [50] Внутренне демон флота взаимодействует с локальными экземплярами systemd через D-Bus и с развертыванием etcd через свой открытый API. Использование флота позволяет развертывать один или несколько контейнеров по всему кластеру с более продвинутыми параметрами, включая избыточность , отработку отказа , развертывание на определенных элементах кластера, зависимости между контейнерами и групповое развертывание контейнеров. Утилита командной строки, называемая flowctl , используется для настройки и мониторинга этой распределенной системы инициализации; [55] внутри него он взаимодействует с демоном флота , используя API на основе JSON поверх HTTP, который также можно использовать напрямую. При локальном использовании на члене кластера флотктл взаимодействует с локальным экземпляром флота через сокет домена Unix ; при использовании с внешнего хоста используется туннелирование SSH с аутентификацией, обеспечиваемой с помощью открытых ключей SSH . [56] [57] [58] [59] [60]

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

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

При работе на выделенном оборудовании Container Linux может быть либо постоянно установлен в локальном хранилище, например, на жестком диске (HDD) или твердотельном диске (SSD) [62] , либо загружен удаленно по сети с использованием среды предварительной загрузки (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 , который дополнительно интегрирует Google Kubernetes в качестве утилиты управления кластером. С апреля 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 с Project Atomic от Red Hat для создания новой операционной системы Red Hat CoreOS, одновременно согласовывая исходную версию Fedora. Проект сообщества открытого исходного кода вокруг Fedora CoreOS, объединяющий технологии обоих предшественников.

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

Прием

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

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

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

Рекомендации

  1. ^ ab «Объявление об окончании срока службы CoreOS Container Linux». coreos.com . Проверено 16 августа 2020 г.
  2. ^ «coreos/manifest: выпуск v94.0.0 (контейнер Linux v94.0.0)» . github.com . 3 октября 2013 года . Проверено 22 сентября 2014 г.
  3. ^ «Примечания к выпуску CoreOS Container Linux # Стабильный канал» . coreos.com . 22 мая 2020 года. Архивировано из оригинала 11 ноября 2020 года . Проверено 22 мая 2020 г.
  4. ^ «Примечания к выпуску CoreOS Container Linux # Бета-канал» . coreos.com . 22 мая 2020 года. Архивировано из оригинала 11 ноября 2020 года . Проверено 22 мая 2020 г.
  5. ^ «Примечания к выпуску CoreOS Container Linux # Альфа-канал» . coreos.com . 22 мая 2020 года. Архивировано из оригинала 11 ноября 2020 года . Проверено 22 мая 2020 г.
  6. ^ abcd Тимоти Прикетт Морган (15 февраля 2015 г.). «CoreOS гипермасштабирует Linux, делая его невидимым». nextplatform.com . Проверено 14 июня 2015 г.
  7. ^ «Пилотное соглашение CoreOS» . coreos.com . 13 марта 2014 года. Архивировано из оригинала 12 сентября 2014 года . Проверено 26 марта 2014 г.
  8. ^ ab "coreos/etcd:etcd/LICENSE at master". github.com . 31 июля 2013 года . Проверено 26 марта 2014 г.
  9. ^ «Документация по контейнеру CoreOS Linux 2514.1.0» . coreos.com . 21 января 2021 года. Архивировано из оригинала 21 января 2021 года . Проверено 21 января 2021 г.
  10. ^ «CoreOS Linux теперь является контейнерным Linux» . coreos.com . Проверено 20 декабря 2016 г.
  11. ^ abcdef Либби Кларк (9 сентября 2013 г.). «Брэндон Филипс: Как дистрибутив CoreOS Linux использует Cgroups». Linux.com . Архивировано из оригинала 22 февраля 2014 года . Проверено 13 февраля 2014 г.
  12. ↑ ab Кейд Мец (21 августа 2013 г.). «Хакеры Linux восстанавливают Интернет в гараже Кремниевой долины». Проводной . Проверено 13 февраля 2014 г.
  13. ^ ab «CoreOS — новый подход к серверным системам на базе Linux». itnews2day.com . 22 августа 2013. Архивировано из оригинала 29 ноября 2014 года . Проверено 26 марта 2014 г.
  14. ^ abcde «Документация CoreOS: использование CoreOS». coreos.com . Архивировано из оригинала 23 февраля 2014 года . Проверено 13 февраля 2014 г.
  15. ^ ab «Создание образов разработки: обновление стабильных для portage ebuild из Gentoo». coreos.com . Архивировано из оригинала 14 июля 2017 года . Проверено 24 мая 2016 г.
  16. ^ ab «Дистрибутивы на основе Gentoo». gentoo.org . 25 марта 2016 г. Проверено 24 мая 2016 г.
  17. Брайан Харрингтон (8 июля 2014 г.). «CoreOS: анатомия обновления CoreOS». youtube.com . Рэкспейс . Проверено 25 июля 2014 г.
  18. Алекс Полви (25 июля 2014 г.). «Стабильная версия CoreOS». coreos.com . Проверено 28 августа 2014 г.
  19. ^ «Примечания к выпуску CoreOS». coreos.com . Архивировано из оригинала 11 ноября 2020 года . Проверено 28 августа 2014 г.
  20. Брэндон Филипс (28 января 2015 г.). «Выпуск etcd 2.0 – первый крупный стабильный выпуск». coreos.com . Проверено 14 июня 2015 г.
  21. ^ «Документация Fedora CoreOS :: Сайт документации Fedora» . docs.fedoraproject.org . Проверено 16 августа 2020 г.
  22. Джонатан Корбет (29 октября 2007 г.). «Записки из контейнера». LWN.net . Проверено 3 июля 2016 г.
  23. Джейк Эдж (19 ноября 2014 г.). «Пространства имен групп управления». LWN.net . Проверено 3 июля 2016 г.
  24. ^ ab «Документация CoreOS: использование Docker с 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 г.). «Ракетные контейнеры: как CoreOS планирует бросить вызов Docker». infoweek.com . Проверено 14 июня 2015 г.
  28. Алекс Полви (1 декабря 2014 г.). «CoreOS создает среду выполнения контейнера, rkt». coreos.com . Проверено 14 июня 2015 г.
  29. ^ аб Джош Беркус (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 г.). «Докер и приятели представляют организацию по стандартизации программных контейнеров». Дата-центр. Регистр . Проверено 19 января 2017 г. Проект Open Container Project (OCP), о котором было объявлено на конференции DockerCon в Сан-Франциско в понедельник, будет поддерживать и развивать общую среду выполнения контейнеров и формат изображений, частично основанный на коде и спецификациях, предоставленных Docker.
  33. Фредерик Лардинуа (22 июня 2015 г.). «Docker, CoreOS, Google, Microsoft, Amazon и другие объединяются, чтобы разработать общий стандарт контейнеров». ТехКранч . Проверено 24 июня 2015 г.
  34. ^ «Лидеры отрасли объединяются для создания проекта стандартов открытых контейнеров» . opencontainers.org . 22 июня 2015. Архивировано из оригинала 13 августа 2015 года . Проверено 24 июня 2015 г.
  35. Нил Макаллистер (22 июля 2015 г.). «Проект Open Container переименовывается, говорит, что до стандарта осталось всего несколько недель: Linux Foundation, Docker и его друзья выбирают Open Container Initiative». Регистр . Проверено 29 января 2016 г.
  36. ^ «Документация CoreOS: использование systemd с CoreOS» . coreos.com . Архивировано из оригинала 14 февраля 2014 года . Проверено 13 февраля 2014 г.
  37. ^ ab «Документация CoreOS: обновления и исправления». coreos.com . Архивировано из оригинала 14 февраля 2014 года . Проверено 27 февраля 2015 г.
  38. ^ аб Фил Уилан (28 августа 2013 г.). «Алекс Полви объясняет CoreOS». activestate.com . Архивировано из оригинала 24 февраля 2015 года . Проверено 7 мая 2015 г.
  39. ^ «Документация CoreOS: Добавление дискового пространства на ваш компьютер с CoreOS» . coreos.com . Проверено 27 февраля 2015 г.
  40. Алекс Полви (27 марта 2014 г.). «Крупное обновление: btrfs, Docker 0.9, добавление пользователей, доступ для записи / и т. д. и многое другое!». 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 в мастере" . github.com . 1 февраля 2015 года . Проверено 17 апреля 2015 г.
  44. ^ "coreos/слесарь: слесарь/ЛИЦЕНЗИЯ у мастера" . github.com . 19 января 2014 года . Проверено 17 апреля 2015 г.
  45. ^ «Омаха - установщик программного обеспечения и средство автоматического обновления для Windows» . code.google.com . Проверено 11 октября 2014 г.
  46. ^ "Обзор Омахи" . омаха.googlecode.com . 23 сентября 2009 года. Архивировано из оригинала 6 мая 2009 года . Проверено 11 октября 2014 г.
  47. ^ "Пакет Омаха" . godoc.org . 24 июня 2014 года . Проверено 4 июля 2014 г.
  48. ^ «Документация CoreOS: CoreUpdate» . coreos.com . Проверено 4 июля 2014 г.
  49. Марк Муди (16 мая 2014 г.). «Демоверсия среды разработки CoreOS + Docker». github.com . Проверено 16 апреля 2015 г.
  50. ^ аб Джонатан Корбет (22 октября 2014 г.). «И т. д. и флот». LWN.net . Проверено 22 июня 2015 г.
  51. ^ «Документация CoreOS: использование etcd с CoreOS» . coreos.com . Проверено 13 февраля 2014 г.
  52. ^ «Документация CoreOS: Начало работы с etcd» . coreos.com . Проверено 13 февраля 2014 г.
  53. Брэндон Филипс (15 января 2014 г.). «etcd@GoSF». www.speakerdeck.com . Проверено 13 февраля 2014 г.
  54. ^ Вуд, Джош. «Оркестровка контейнеров: переход от парка к Kubernetes». coreos..com . КореОС.
  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: флот/README.md в мастере" . github.com . 18 февраля 2014 года . Проверено 3 апреля 2014 г.
  59. ^ "coreos/fleet: флот/Documentation/deployment-and-configuration.md в мастере (развертывание парка)" . github.com . 14 апреля 2015 года . Проверено 17 апреля 2015 г.
  60. ^ «coreos/fleet: флот/Документация/api-v1.md (API флота v1)» . github.com . 29 октября 2014 года . Проверено 17 апреля 2015 г.
  61. ^ "coreos/fleet: флот/ЛИЦЕНЗИЯ у хозяина" . 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 в свое облако». Регистр . Проверено 26 мая 2014 г.
  67. Алекс Кроуфорд (20 октября 2014 г.). «CoreOS теперь доступна в Microsoft Azure». coreos.com . Проверено 22 октября 2014 г.
  68. Стивен Дж. Воан-Николс (6 апреля 2015 г.). «CoreOS переносит Google Kubernetes на предприятия». ЗДНет . Проверено 29 апреля 2015 г.
  69. Бен Кепес (6 апреля 2015 г.). «CoreOS и Google защищаются, стал ли жертвой Docker?». Форбс . Проверено 29 апреля 2015 г.
  70. ^ Евгений Якубович (28 августа 2014 г.). «Представляем фланель: оверлейную сеть для контейнеров на базе 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 и будущее контейнерного Linux | CoreOS» . coreos.com . Проверено 6 июня 2019 г.
  74. ^ «Анонс проекта Flatcar Linux | Kinvolk» . kinvolk.io . 6 марта 2018 г. Проверено 6 июня 2019 г.
  75. ^ «Представляем канал Flatcar Linux Edge | Kinvolk» . kinvolk.io . 15 мая 2019 г. Проверено 6 июня 2019 г.
  76. ^ CoreOS: другой тип дистрибутива Linux [LWN.net]

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