Runtime de conteneur mature: containerd devient diplômé de la CNCF

Nous suivons le projet containerd depuis le tout début . Par conséquent, nous ne pouvons ignorer un événement significatif: hier soir, l'organisation CNCF derrière Kubernetes et d'autres solutions Open Source exceptionnelles pour le monde natif du cloud a annoncé que containerd était son «diplômé». Ce projet était déjà le cinquième avec ce statut, rejoignant les rangs des K8, Prometheus, Envoy et CoreDNS.



Critères CNCF


La CNCF, qui soutient actuellement des dizaines de projets Open Source, a adopté trois catégories pour leur classification:

  1. Sandbox («sandbox») - pour les premiers développements expérimentaux mais prometteurs qui (à l'avenir) «ajoutent de la valeur à la mission CNCF», c'est-à-dire contribuera au développement de l'écosystème Open Source et de la communauté formée autour de l'infrastructure pour les applications natives cloud modernes. Il existe 12 projets de ce type.
  2. Incubation («incubateur») - pour les projets qui ont au moins trois utilisateurs (documentés et indépendants) en production, dans lesquels des niveaux et des échelles de qualité suffisants (selon le comité technique) sont fournis, ainsi qu'un nombre suffisant de contributeurs avec bit de validation et développement stable de la base de code. Il y en a 15.
  3. Graduation - pour les projets avec des committers d'au moins deux organisations, un badge de conformité aux meilleures pratiques de la CII (Core Infrastructure Initiative), adopté par le Code de conduite de la CNCF , un système de gestion et d'acceptation clairement défini, une liste publique des utilisateurs et, bien sûr, une évaluation positive le résultat du vote correspondant du comité technique de la CNCF. Maintenant, il y en a 5.



En bref, la préparation du projet à la «libération» au CNCF est formulée comme «une adaptation, une originalité, un processus de gestion formel en croissance rapide et un engagement strict envers une communauté durable et inclusive». Le containerd , transféré par Docker à la CNCF il y a près de 2 ans, est désormais reconnu comme répondant à ces critères.

containerd: origines et présent


Le projet containerd remonte à l'époque où les arbres Docker étaient gros. En 2015, ses développeurs ont annoncé qu'il était temps de rendre le Docker Engine plus compact (rapide, fiable, portable ...), et ont donc commencé à intégrer ses composants dans des projets distincts .

Tout a commencé avec l'annonce de l'outil de lancement de conteneurs runc (2015), puis le runtime containerd pour les conteneurs (2016) est apparu, et un an plus tard, cette initiative est devenue encore plus globale et nous a amenés Moby .


Illustration pour la sortie de Docker 1.11 (avril 2016): moteur Docker et composants supprimés

Retour à containerd. En bref, son rôle fonctionnel a été réduit (et cela n'a pas changé à ce jour) au fait qu'en tant que démon sur le système hôte, il a géré l'ensemble du cycle de vie du conteneur: de la réception et du stockage de l'image au lancement du conteneur (via le runc déjà mentionné) et contrôler son travail. En mars 2017, un an après la séparation du conteneur, Docker l'a transféré à la CNCF , ce qui s'est produit simultanément avec une initiative similaire de CoreOS appelée rkt (nous y reviendrons) .

D'autres développements incluent l' émergence et le développement (dirigé par Red Hat) d'un concurrent orienté Kubernetes appelé CRI-O * ... et la «réponse» miroir de Docker Inc sous la forme de cri-containerd .

Pour interagir avec les K8, un démon spécial (éponyme) a été utilisé dans cri-containerd, et par la version 1.1, la solution s'est transformée en plug-in pour le nouvel environnement d'exécution de conteneur de Kubernetes - Container Runtime Interface (CRI) - et ici le plug-in communiquait directement avec containerd ( appel des fonctions nécessaires).



En juin 2018, il a été annoncé que le plugin containerd CRI était prêt pour la production. Le référentiel de projet actuel est containerd / cri .

* Il est intéressant de noter que la demande déposée en novembre 2018 pour l'inclusion du concurrent containerd et rkt - CRI-O - dans les projets CNCF n'a pas encore été approuvée par l'organisation.

Aujourd'hui, containerd s'appelle indiscrètement "un environnement de conteneur exécutable qui est une norme de l'industrie et se concentre sur la simplicité, la fiabilité et la portabilité":



L'architecture réelle des solutions de conteneurs utilisant containerd (pour la plupart, bien sûr, elles sont concentrées sur Kubernetes, mais formellement, elles ne sont pas limitées à cette plate-forme) , elle apparaît comme suit:



La solution elle-même se présente sous la forme d'un démon pour Linux (les versions du noyau 4.x sont recommandées , bien que des options avec des versions antérieures soient possibles) et Windows. Le code source est écrit en Go (version 1.9.x + requise ).

La dernière version de containerd est la 1.2.4 (datée du 14 février 2019) , où la vulnérabilité CVE-2019-5736 dans runc a été corrigée. Le prochain jalon est la version 1.3 , où des innovations telles que les groupes de conteneurs , l' optimisation des performances pour le tirage des images, diverses améliorations dans le travail avec snapshotter et autres sont attendues.

Le projet compte plus de 3500 étoiles sur GitHub, 14 contributeurs et 166 contributeurs d'entreprises (sauf Docker, bien sûr) comme Alibaba , Facebook, Google, Huawei , IBM, Microsoft, NTT, Tesla. Plus de statistiques de base de code peuvent être vues sur DevStats .

Parmi les utilisateurs remarquables de containerd , il suffit de mentionner Moby lui-même et les projets connexes (LinuxKit, BuildKit), les services cloud de Google (GKE), Microsoft (acs-engine dans Azure et dans le futur AKS), IBM (IKS, ICP) et Alibaba, solutions / moteurs de conteneurs (Rio de Rancher, Kata Containers, Balena), ainsi que le récent Firecracker .

À propos des concurrents


Enfin, il convient de dire que le rythme de développement de rkt - un analogue de containerd, inclus dans la CNCF à peu près au même moment - est nettement inférieur. Il suffit d'indiquer que sa dernière version - v1.30.0 - a eu lieu il y a près d'un an (en avril 2018).

Il y a des conclusions logiques d'un point de vue commercial: il y a environ un an, le développeur rkt d'origine, CoreOS, a été acquis par Red Hat. Et ce dernier (ou il est plus correct de dire que maintenant IBM a déjà ...) , comme mentionné dans le document, a sa propre idée originale - cri-o - l'activité sur laquelle se déroule beaucoup plus activement .

Cependant, alors que le géant Linux n'a pas pu «démarrer» son projet au CNCF, peut-être que les mots sur containerd en tant que standard de l'industrie semblent très crédibles.

PS


Lisez aussi dans notre blog:

Source: https://habr.com/ru/post/fr442036/


All Articles