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

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

В краткой же форме готовность проекта к «выпуску» в CNCF формулируют как его «бурно растущую адаптацию, своеобразность, формальный процесс управления и строгую приверженность к устойчиво развивающемуся и инклюзивному сообществу». Соответствующим таким критериям отныне признан и containerd [7], переданный компанией Docker в CNCF уже почти 2 года назад.
Проект containerd берёт своё начало во времена, когда деревья Docker был большим. В 2015 году его разработчики объявили, что настало время сделать Docker Engine более компактным (быстрым, надёжным, портируемым…), а посему начали выносить его компоненты в отдельные проекты.
Всё началось [8] с анонса инструмента для запуска контейнеров runc (2015 год), затем появилась [9] исполняемая среда для контейнеров containerd (2016 год), а через год данная инициатива стала ещё более глобальной и принесла нам Moby [10].

Иллюстрация к релизу 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 уже напрямую (вызовом нужных функций).

В июне 2018 года было объявлено [17], что CRI-плагин containerd готов к production. Актуальный репозиторий проекта — containerd/cri [18].
* Интересно заметить, что поданная в ноябре 2018 года заявка [19] на включение конкурента containerd и rkt — CRI-O — в состав проектов CNCF до сих пор не нашла одобрения в организации.
На сегодняшний день containerd нескромно называет себя «исполняемой средой для контейнеров, являющейся индустриальным стандартом и фокусирующейся на простоте, надёжности и портируемости»:

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

Само решение поставляется [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 как промышленном стандарте звучат весьма правдоподобно.
Читайте также в нашем блоге:
Автор: Дмитрий Шурупов
Источник [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
Нажмите здесь для печати.