- PVSM.RU - https://www.pvsm.ru -

Зрелая исполняемая среда для контейнеров: containerd стал «выпускником» CNCF

За проектом containerd мы следим с самого его начала [1]. Посему не можем обойти вниманием значимое событие: минувшей ночью организация CNCF, стоящая за Kubernetes и другими выдающимися Open Source-решениями для мира cloud native, объявила [2] containerd своим «выпускником». Этот проект стал уже пятым с таким статусом, пополнив ряды K8s, Prometheus, Envoy и CoreDNS.

Зрелая исполняемая среда для контейнеров: containerd стал «выпускником» CNCF - 1

Критерии CNCF

В CNCF, поддерживающей на сегодняшний день десятки Open Source-проектов, приняты [3] три категории для их классификации:

  1. Sandbox («песочница») — для самых ранних [4], экспериментальных, но перспективных разработок, которые (в перспективе) «добавят ценности миссии CNCF», т.е. будут способствовать развитию Open Source-экосистемы и сообщества, сформированных вокруг инфраструктуры для современных облачных (cloud native) приложений. Таких проектов сейчас 12.
  2. Incubating («инкубатор») — для проектов, имеющих хотя бы трёх (документально подтверждённых и независимых) пользователей в production, в рамках которых обеспечиваются достаточные (по оценке технического комитета) уровни качества и масштабы, а также обладающих адекватным числом контрибьюторов с commit bit и стабильным развитием кодовой базы. Всего их 15.
  3. Graduation («выпускники») — для проектов с коммитерами хотя бы из двух организаций, бейджем соответствия лучшим практикам CII [5] (Core Infrastructure Initiative), принятым CNCF Code of Conduct [6], ясно определённой схемой управления и принятия коммитов, публичным списком пользователей и, конечно, положительным исходом соответствующего голосования технического комитета CNCF. Теперь их 5.

Зрелая исполняемая среда для контейнеров: containerd стал «выпускником» CNCF - 2

В краткой же форме готовность проекта к «выпуску» в CNCF формулируют как его «бурно растущую адаптацию, своеобразность, формальный процесс управления и строгую приверженность к устойчиво развивающемуся и инклюзивному сообществу». Соответствующим таким критериям отныне признан и containerd [7], переданный компанией Docker в CNCF уже почти 2 года назад.

containerd: истоки и настоящее

Проект containerd берёт своё начало во времена, когда деревья Docker был большим. В 2015 году его разработчики объявили, что настало время сделать Docker Engine более компактным (быстрым, надёжным, портируемым…), а посему начали выносить его компоненты в отдельные проекты.

Всё началось [8] с анонса инструмента для запуска контейнеров runc (2015 год), затем появилась [9] исполняемая среда для контейнеров containerd (2016 год), а через год данная инициатива стала ещё более глобальной и принесла нам Moby [10].

Зрелая исполняемая среда для контейнеров: containerd стал «выпускником» CNCF - 3
Иллюстрация к релизу Docker 1.11 [11] (апрель 2016 года): Docker Engine и вынесенные из него компоненты

Вернёмся к containerd. Если вкратце, то его функциональная роль сводилась (и это не изменилось по сей день) к тому, что он, будучи демоном на хост-системе, управлял всем жизненным циклом контейнера: от получения и хранения образа до запуска контейнера (через уже упомянутый runc) и контролирования его работы. В марте 2017 года, через год после отделения container, компания Docker передала [12] его в CNCF, что произошло одновременно [13] с аналогичной инициативой от CoreOS под названием rkt [14] (к ней мы ещё вернёмся).

Дальнейшие события включают в себя появление и развитие [15] (под руководством Red Hat) ориентированного на Kubernetes конкурента под названием CRI-O*… и зеркальный «ответ» Docker Inc — в виде cri-containerd.

Для взаимодействия с K8s в cri-containerd использовался специальный (одноимённый) демон, а к версии 1.1 решение превратилось [16] в плагин к новому интерфейсу для исполняемых сред контейнеров в Kubernetes — Container Runtime Interface (CRI), — и здесь плагин общался с containerd уже напрямую (вызовом нужных функций).

Зрелая исполняемая среда для контейнеров: containerd стал «выпускником» CNCF - 4

В июне 2018 года было объявлено [17], что CRI-плагин containerd готов к production. Актуальный репозиторий проекта — containerd/cri [18].

* Интересно заметить, что поданная в ноябре 2018 года заявка [19] на включение конкурента containerd и rkt — CRI-O — в состав проектов CNCF до сих пор не нашла одобрения в организации.

На сегодняшний день containerd нескромно называет себя «исполняемой средой для контейнеров, являющейся индустриальным стандартом и фокусирующейся на простоте, надёжности и портируемости»:

Зрелая исполняемая среда для контейнеров: containerd стал «выпускником» CNCF - 5

Актуальная архитектура контейнерных решений, использующих containerd (в массе они, конечно, ориентированы на Kubernetes, но формально этой платформой не ограничены), представляется следующим образом:

Зрелая исполняемая среда для контейнеров: containerd стал «выпускником» CNCF - 6

Само решение поставляется [20] в виде демона для Linux (рекомендуются [21] ядра версий 4.x, хотя возможны и варианты с более ранними) и Windows. Исходный код написан на Go (требуется [22] версия 1.9.x+).

Последний релиз containerd — 1.2.4 [23] (от 14 февраля 2019), где исправлена уязвимость CVE-2019-5736 [24] в runc. Ближайший milestone — версия 1.3 [25], где ожидаются такие новшества, как группы контейнеров [26], оптимизация производительности [27] для операции pull'а образов, различные улучшения в работе со snapshotter и другие [25].

У проекта — 3500+ звёзд на GitHub, 14 коммитеров и 166 контрибьюторов из таких компаний (кроме Docker, конечно), как Alibaba [28], Facebook, Google, Huawei [29], IBM, Microsoft, NTT, Tesla. Больше статистики по кодовой базе можно увидеть на DevStats [30].

Среди заметных пользователей [31] containerd достаточно упомянуть сам Moby и связанные с ним проекты (LinuxKit, BuildKit), облачные сервисы Google (GKE), Microsoft (acs-engine в Azure, а в будущем и AKS), IBM (IKS, ICP) и Alibaba, контейнерные решения/движки (Rio от Rancher, Kata Containers, Balena), а также даже недавний Firecracker [32].

О конкурентах

Напоследок, стоит сказать, что темпы развития rkt — аналога containerd, включённого в CNCF примерно в то же время, — значительно уступают. Достаточно указать на то, что последний его релиз — v1.30.0 — состоялся почти год назад (в апреле 2018).

Тут напрашиваются логичные выводы с позиций бизнеса: около года назад оригинальный разработчик rkt — CoreOS — был поглощён [33] компанией Red Hat. А у последней (или правильнее сказать, что теперь уже [34] у IBM…), как упоминалось в материале, есть своё детище — cri-o, — деятельность над которым идёт куда активнее [35].

Однако, пока Linux-гиганту так и не удалось «завести» свой проект в CNCF, пожалуй, слова о containerd как промышленном стандарте звучат весьма правдоподобно.

P.S.

Читайте также в нашем блоге:

Автор: Дмитрий Шурупов

Источник [37]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/news/310288

Ссылки в тексте:

[1] самого его начала: https://habr.com/ru/company/flant/blog/325358/

[2] объявила: https://www.cncf.io/announcement/2019/02/28/cncf-announces-containerd-graduation/

[3] приняты: https://github.com/cncf/toc/blob/master/process/graduation_criteria.adoc

[4] самых ранних: https://github.com/cncf/toc/blob/master/process/sandbox.md

[5] лучшим практикам CII: https://bestpractices.coreinfrastructure.org/en

[6] CNCF Code of Conduct: https://github.com/cncf/foundation/blob/master/code-of-conduct.md

[7] containerd: https://containerd.io/

[8] началось: https://blog.docker.com/2015/06/runc/

[9] появилась: https://blog.docker.com/2016/04/docker-containerd-integration/

[10] принесла нам Moby: https://habr.com/ru/company/flant/blog/329136/

[11] Docker 1.11: https://blog.docker.com/2016/04/docker-engine-1-11-runc/

[12] передала: https://blog.docker.com/2017/03/docker-donates-containerd-to-cncf/

[13] одновременно: https://www.nixp.ru/news/13965.html

[14] rkt: https://coreos.com/rkt/

[15] появление и развитие: https://habr.com/ru/company/flant/blog/340010/

[16] превратилось: https://habr.com/ru/company/flant/blog/414875/

[17] было объявлено: https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/

[18] containerd/cri: https://github.com/containerd/cri

[19] заявка: https://github.com/cncf/toc/pull/177

[20] поставляется: https://github.com/containerd/containerd#getting-started

[21] рекомендуются: https://github.com/containerd/containerd#runtime-requirements

[22] требуется: https://containerd.io/docs/getting-started/

[23] 1.2.4: https://github.com/containerd/containerd/releases/tag/v1.2.4

[24] уязвимость CVE-2019-5736: https://habr.com/ru/company/flant/blog/439964/

[25] версия 1.3: https://github.com/containerd/containerd/milestone/20

[26] группы контейнеров: https://github.com/containerd/containerd/pull/3004

[27] оптимизация производительности: https://github.com/containerd/containerd/issues/2886

[28] Alibaba: https://habr.com/ru/company/flant/blog/328380/

[29] Huawei: https://habr.com/ru/company/flant/blog/349940/

[30] DevStats: https://containerd.devstats.cncf.io/d/8/dashboards

[31] заметных пользователей: https://github.com/containerd/containerd/blob/master/ADOPTERS.md

[32] Firecracker: https://habr.com/ru/company/flant/blog/431192/

[33] был поглощён: https://www.redhat.com/en/about/press-releases/red-hat-acquire-coreos-expanding-its-kubernetes-and-containers-leadership

[34] теперь уже: https://www.redhat.com/en/about/press-releases/ibm-acquire-red-hat-completely-changing-cloud-landscape-and-becoming-worlds-1-hybrid-cloud-provider

[35] куда активнее: https://github.com/kubernetes-sigs/cri-o/releases

[36] Прошлое, настоящее и будущее Docker и других исполняемых сред контейнеров в Kubernetes: https://habr.com/ru/company/flant/blog/429952/

[37] Источник: https://habr.com/ru/post/442036/?utm_source=habrahabr&utm_medium=rss&utm_campaign=442036