Laufzeit für ausgereifte Container: Containerd wird CNCF-Absolvent

Wir haben das Containerd-Projekt von Anfang an verfolgt . Daher können wir ein bedeutendes Ereignis nicht ignorieren: Gestern Abend gab die CNCF-Organisation hinter Kubernetes und anderen herausragenden Open Source-Lösungen für die Cloud-native Welt bekannt , dass sie ihren "Absolventen" enthält. Dieses Projekt war bereits das fünfte mit diesem Status und schloss sich den Reihen der K8, Prometheus, Envoy und CoreDNS an.



CNCF-Kriterien


CNCF, die derzeit Dutzende von Open Source-Projekten unterstützt, hat drei Kategorien für ihre Klassifizierung übernommen:

  1. Sandbox ("Sandbox") - für die frühesten experimentellen, aber vielversprechenden Entwicklungen, die (in Zukunft) "den Wert der CNCF-Mission erhöhen", d. H. wird zur Entwicklung des Open Source-Ökosystems und der Community beitragen, die sich um die Infrastruktur für moderne native Cloud-Anwendungen bilden. Es gibt 12 solcher Projekte.
  2. Inkubation („Inkubator“) - für Projekte mit mindestens drei (dokumentierten und unabhängigen) Anwendern in der Produktion, in denen ausreichende (nach Angaben des Technischen Komitees) Qualitätsstufen und -skalen bereitgestellt werden sowie eine ausreichende Anzahl von Mitwirkenden mit Commit-Bit und stabile Entwicklung der Codebasis. Es gibt 15 von ihnen.
  3. Abschluss - für Projekte mit Auftraggebern von mindestens zwei Organisationen ein Ausweis zur Einhaltung der Best Practices von CII (Core Infrastructure Initiative), der vom CNCF-Verhaltenskodex verabschiedet wurde, ein klar definiertes Management- und Akzeptanzschema, eine öffentliche Liste der Benutzer und natürlich eine positive das Ergebnis der entsprechenden Abstimmung durch das technische Komitee der CNCF. Jetzt gibt es 5 von ihnen.



Kurz gesagt, die Bereitschaft des Projekts zur „Veröffentlichung“ bei CNCF wird als „schnell wachsende Anpassung, Originalität, formaler Managementprozess und striktes Engagement für eine nachhaltige und integrative Gemeinschaft“ formuliert. Der Container , der vor fast zwei Jahren von Docker an CNCF übertragen wurde, erfüllt nun diese Kriterien.

Containerd: Herkunft und Gegenwart


Das Containerd-Projekt stammt aus der Zeit, als die Docker- Bäume groß waren. Im Jahr 2015 gaben die Entwickler bekannt, dass es an der Zeit sei, die Docker Engine kompakter zu machen (schnell, zuverlässig, tragbar ...), und begannen daher , ihre Komponenten in separate Projekte zu integrieren .

Alles begann mit der Ankündigung des Start-Tools für Runc-Container (2015), dann erschien die Containerd-Laufzeit für Container (2016), und ein Jahr später wurde diese Initiative noch globaler und brachte uns Moby .


Abbildung für die Veröffentlichung von Docker 1.11 (April 2016): Docker Engine und daraus entfernte Komponenten

Zurück zu Containerd. Kurz gesagt, seine funktionale Rolle wurde reduziert (und dies hat sich bis heute nicht geändert) , da er als Daemon auf dem Hostsystem den gesamten Lebenszyklus des Containers verwaltete: vom Empfangen und Speichern des Images bis zum Starten des Containers (über den bereits erwähnten Runc) und seine Arbeit kontrollieren. Im März 2017, ein Jahr nach der Trennung des Containers, übertrug Docker ihn an CNCF , was gleichzeitig mit einer ähnlichen Initiative von CoreOS namens rkt geschah (wir werden darauf zurückkommen) .

Weitere Entwicklungen sind die Entstehung und Entwicklung (angeführt von Red Hat) eines Kubernetes-orientierten Konkurrenten namens CRI-O * ... und die Spiegelantwort von Docker Inc in Form eines Cri-Containerd .

Ein spezieller (selbstbetitelter) Daemon wurde verwendet, um mit K8s in Cri-Containerd zu interagieren. Ab Version 1.1 wurde die Lösung zu einem Plug-In für die neue Container-Laufzeitumgebung von Kubernetes - Container Runtime Interface (CRI) - und hier kommunizierte das Plug-In direkt mit Containerd ( Aufruf der notwendigen Funktionen).



Im Juni 2018 wurde bekannt gegeben, dass das enthaltene CRI-Plugin produktionsbereit ist. Das aktuelle Projekt-Repository ist includeerd / cri .

* Es ist interessant festzustellen, dass der im November 2018 eingereichte Antrag auf Aufnahme des Mitbewerbers Containerd und RKT - CRI-O - in CNCF-Projekte von der Organisation noch nicht genehmigt wurde.

Containerd nennt sich heute indiskret "eine ausführbare Containerumgebung, die ein Industriestandard ist und sich auf Einfachheit, Zuverlässigkeit und Portabilität konzentriert":



Die tatsächliche Architektur von Containerlösungen mit Containerd (zum größten Teil konzentrieren sie sich natürlich auf Kubernetes, aber formal sind sie nicht auf diese Plattform beschränkt) sieht sie wie folgt aus:



Die Lösung selbst wird in Form eines Daemons für Linux (Kernel-Versionen 4.x werden empfohlen , obwohl Optionen mit früheren Versionen möglich sind) und Windows geliefert. Der Quellcode ist in Go geschrieben (Version 1.9.x + erforderlich ).

Die neueste Version von Containerd ist 1.2.4 (vom 14. Februar 2019) , in der die Sicherheitsanfälligkeit CVE-2019-5736 in runc behoben wurde. Der nächste Meilenstein ist Version 1.3 , in der Innovationen wie Containergruppen , Leistungsoptimierung für den Pull-Betrieb von Bildern, verschiedene Verbesserungen bei der Arbeit mit Snapshotter und andere erwartet werden.

Das Projekt hat mehr als 3500 Sterne auf GitHub, 14 Committer und 166 Mitwirkende von Unternehmen (außer Docker natürlich) wie Alibaba , Facebook, Google, Huawei , IBM, Microsoft, NTT und Tesla. Weitere Codebasisstatistiken finden Sie auf DevStats .

Unter den bemerkenswerten Containerd- Benutzern genügt es, Moby selbst und verwandte Projekte (LinuxKit, BuildKit), Google Cloud Services (GKE), Microsoft (ACS-Engine in Azure und in Zukunft AKS), IBM (IKS, ICP) und Alibaba zu erwähnen. Containerlösungen / Motoren (Rio von Rancher, Kata Containers, Balena) sowie sogar der aktuelle Firecracker .

Über Wettbewerber


Schließlich ist anzumerken, dass das Entwicklungstempo von rkt - einem Analogon von Containerd, das ungefähr zur gleichen Zeit in CNCF enthalten ist - erheblich geringer ist. Es reicht aus, darauf hinzuweisen, dass die letzte Veröffentlichung - v1.30.0 - vor fast einem Jahr (im April 2018) stattgefunden hat.

Aus geschäftlicher Sicht gibt es logische Schlussfolgerungen: Vor etwa einem Jahr wurde der ursprüngliche RKT-Entwickler CoreOS von Red Hat übernommen. Und letzteres (oder es ist richtiger zu sagen, dass IBM bereits ...) hat , wie im Material erwähnt, eine eigene Idee - cri-o -, deren Aktivitäten viel aktiver sind .

Obwohl der Linux-Riese es nicht geschafft hat, sein Projekt in CNCF zu „bringen“, klingen die Worte über Containerd als Industriestandard vielleicht sehr glaubwürdig.

PS


Lesen Sie auch in unserem Blog:

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


All Articles