Mi a containerd, és hogyan viszonyul a Dockerhez és a Kuberneteshez? – CloudSavvy IT

Avatar Gadam | 2021.03.12. 73 Views 0 Likes 0 Ratings

73 Views 0 Ratings Rate it

[ad_1]

A Docker és a Kubernetes logókat ábrázoló ábra

A konténerek továbbra is sok ember számára jelentik a „Dockert”. A Docker népszerűsítette a konténerek modern használatát a szoftverfejlesztésben és a telepítésben. Manapság más technológiák is a közelben vannak. Így viszonyul Containerd, Docker és Kubernetes egymáshoz.

A kezdetek

Annak megjelenés 2013-ban, A Docker önálló projekt volt, amely tartalmazott mindent a konténerek felépítéséhez és futtatásához. Hiányzott belőle a konténerek telepítésének egyszerű módja a felhőben.

2013 végén a Google munkatársai már voltak ezzel foglalkozva annak prototípusával, hogy mi lesz Kubernetes. A Kubernetes célja, hogy leegyszerűsítse a konténeres munkaterhelések működését a nagy gépparkokban.

Azokban a korai időkben Kubernetes elválaszthatatlanul összekapcsolódott Dockerrel. A Docker-t közvetlenül használta a tárolókkal való interakcióhoz, annak ellenére, hogy csak a funkcionalitás egy részére volt szüksége – a konténerek tényleges futtatásáért felelős részekre.

A Docker fejlesztőközpontú kezelőfelülete akadályozta Kubernetes-t. Egy dedikált eszköz segítségével meg kellett kerülnie a projekt emberbarát szempontjait, Dockershim. A kérdéseket kiegészítették a Docker és Kubernetes különböző irányai. A Docker elindította a Swarm-ot, a saját Kubernetes-alternatíváját, amely beépített hangszerelést kínál Docker „mód”.

A Containerd felemelkedése

Ahogy a Kubernetes nőtt, és újabb, harmadik féltől származó eszközök jelentek meg a Docker körül, egyértelművé vált architektúrájának korlátai. Ugyanakkor a Open Container Initiative (OCI) megkezdte a konténer formátumok és futásidők egységesítését. Ez egy OCI specifikációt eredményezett, amely meghatározta egy tárolót, amelyet több futási idő is használhat, amire a Docker is példa.

A Docker ezt követően egy új projektbe vonta ki a konténer futási idejét, containerd. Ez magában foglalja a Docker funkcionalitását a konténerek végrehajtására, az alacsony szintű tárolás kezelésére és a képátvitelek kezelésére. Containerd-t adományozták a Cloud Native Computing Foundation (CNCF) annak érdekében, hogy alapot biztosítson a konténer közösség számára új konténer megoldások létrehozásához.

A containerd megjelenése megkönnyíti az olyan projektek számára, mint a Kubernetes, a szükséges alacsony szintű „Docker” elemek elérését. Ahelyett, hogy ténylegesen a Dockert használnák, most már hozzáférhetőbb interfésszel rendelkeznek a konténer futásidejéhez. A konténertechnológiák OCI szabványosítása azt jelenti, hogy más futási idő is használható.

Containerd szerepének megértése

A containerd teljes megértéséhez meg kell vizsgálni a konténerek jellegét. A konténerek valóban absztrakció a különféle Linux kernelfunkciókhoz képest. Tároló futtatásához syscall-okat kell használnia a tárolt környezet beállításához. A lépések platformonként és disztribúciónként változnak.

A Containerd beilleszti ezt az alacsony szintű vezetéket. Célja mint „ügyfél réteg” hogy a konténerszoftver ekkor felépül. Ez lehet fejlesztő-orientált szoftver, például Docker, vagy felhő-orientált fejlesztői eszközök, például Kubernetes.

Korábban a Kubernetes fejlesztésnek két rossz lehetősége maradt: folytassa az írások írását a tetemes Docker felület körül, vagy kezdje el közvetlenül a Linux kernel szolgáltatásait. A containerd kibontásával a Dockerből egy harmadik alternatíva vált elérhetővé: a containerd használata rendszer-absztrakciós rétegként, Docker bevonása nélkül.

Íme egy összefoglaló a három technológia ötvözéséről:

  • Dokkmunkás – Fejlesztő-orientált szoftver magas szintű interfésszel, amely lehetővé teszi a konténerek egyszerű felépítését és futtatását a terminálról. Most a containerd-t használja tároló futásidejeként.
  • Containerd – A kernel tulajdonságainak absztrakciója, amely viszonylag magas szintű tároló felületet biztosít. Más szoftverprojektek felhasználhatják ezt tárolók futtatására és tároló képek kezelésére.
  • Kubernetes – Egy konténeres hangszerelő, amely több konténer futási idővel működik, beleértve a containerd-t is. A Kubernetes arra összpontosít, hogy a konténereket összesítve helyezze el egy vagy több fizikai „csomóponton”. Történelmileg Kubernetes Dockerhez volt kötve.

A Containerd csak egy konténer háttérrendszer. A konténert megvalósító egyéb konténerek Nyissa meg a Containers Runtime specifikációt tartalmazza runC és CRI-O. Ezeket a futási idõket a Docker és a Kubernetes együttesen is használhatjuk; mindegyiknek megvan a maga megkülönböztetése.

Az OCI

Az OCI a meghatározásért felelős testület konténer szabványok. Munkája kulcsfontosságú volt a különböző alkatrész-technológiák közötti átjárhatóság megkönnyítésében.

Az OCI képspecifikációja meghatározza, hogy milyen legyen egy tároló. A futásidejű specifikáció interfészt határoz meg a tárolók futtatásához. Az olyan projektek, mint a containerd, végrehajtják ezeket a specifikációkat.

Fontos, hogy az OCI egyik prioritása a Docker által népszerűsített konténerhasználati élmény támogatása. Képeinek a felhasználó által definiált argumentumok (pl docker run hello-world:latest). Az OCI képeknek ezért elegendő metaadatot kell tartalmazniuk az automatikus konfigurálás engedélyezéséhez.

Láthat hivatkozásokat a Konténer futásidejű interfész (CRI). Ez egy Kubernetes-specifikus absztrakció az OCI specifikáció fölött. A CRI az OCI specifikációkra épít, hogy lehetővé tegye a cserélhető konténer futásideinek támogatását a Kubernetesen belül.

Mi a helyzet a Docker képeimmel?

A Dockerrel készített képek egyáltalán nem „Docker-képek”. Mivel a Docker most már a containerd futásidőt használja, a képek szabványosított Open Container Initiative (OCI) formátumban készülnek.

Nem kell aggódnia a Docker-képek és a használt környezet közötti összeférhetetlenség miatt. A Docker-rel készített képek továbbra is telepíthetők a Kubernetes használatával. A Kubernetes ugyanis támogatja az OCI képeket is a containerd (és más szabványoknak megfelelő futásidők) használatával. Ez a futási idő a képek lehúzásának és futtatásának kezelése, nem pedig a Dockerhez és a Kuberneteshez hasonló magas szintű interfész.

Kubernetes és Docker

Kubernetes 2020 végén megszüntette a Docker futási idejét eltávolításra kerül egy későbbi kiadásban, amelyet jelenleg 2021 végére terveznek. Ezt követően a Kubernetes már nem kínálja fel a Dockert futási idő támogatás. Helyette az OCI specifikációkkal kompatibilis alternatív futást kell használni, mint például a containerd.

Ez a bejelentés aggodalmat keltett a fejlesztőkre gyakorolt ​​következményekkel kapcsolatban. A változás nem érinti a legtöbb meglévő munkafolyamatot. Amint már láthattuk, a Docker OCI-kompatibilis képeket készít, amelyeket az OCI-kompatibilis futási futtathat. Minden kép, amellyel épít docker build továbbra is működni fog a Kubernetesen belül, még a Docker futásidejének eltávolítása után is.

Két különböző technológiát fontolgatnak – a Docker-t parancssori felület tárolók és a Docker létrehozásához és futtatásához használt futási idő amelyet a parancssori felület körbefut.

Túl zavaró az egész!

Néhány év alatt a konténerek megváltoztatták a fejlesztők számát. A környező ökoszisztéma terjeszkedése ennek a változásnak természetes mellékterméke volt. A Containers === Docker a mentalitás túl fojtogatónak bizonyult, mivel megakadályozta, hogy a Kuberneteshez hasonló eszközök teljes képességeiket megmutassák.

A szabványosítás felé történő elmozdulás rengeteg új kifejezést, eszközt és technológiát eredményezett. Ennek ellenére semmi sem változott a fejlesztők számára, függetlenül attól, hogy a gépén Docker CLI-vel, vagy a felhőben lévő Kubernetes-fürtrel kommunikál-e.

Minden magas szintű felhasználói felület (például a Docker és a Kubernetes) most cserélhető alacsony szintű tároló futásidejű (például containerd és runC) előnyöket élvez. Ez nagyobb fokú rugalmasságot tesz lehetővé, és lehetővé teszi az új konténer alapú technológiák szabványokhoz igazodó megalapozását.

[ad_2]
Source link