A înțelege Kubernetes prin raportare la Docker este unul dintre cele mai importante subiecte în cloud native și DevOps. În timp ce Kubernetes și Docker își au cu siguranță locul într-o conversație mai amplă, adevărul este că nu ar trebui neapărat să fie comparate între ele. De fapt, Kubernetes și Docker nu sunt în competiție directă unul cu celălalt. În schimb, le puteți considera ca fiind două tehnologii care se pot completa una pe cealaltă și care pot funcționa împreună.
De unde știți cu care dintre aceste circumstanțe v-ați putea confrunta? Pentru a ajunge acolo, este important să înțelegem mai întâi domeniile specifice în care Kubernetes și Docker se suprapun sau contrastează.
Docker este o platformă open-source pentru containerele de aplicații. Dacă acest concept este nou pentru dumneavoastră, un container este un format de împachetare de sine stătător care plasează tot codul și elementele conexe necesare într-un format executabil. Pentru a folosi o analogie din lumea reală, un container este ca un pachet IKEA cu toate piesele, suporturile și șuruburile biroului (și cheia hexagonală, bineînțeles) - dar, pe lângă faptul că include toate piesele, Docker mai și construiește biroul pentru dvs. atunci când executați containerul.
Docker este adesea folosit de dezvoltatorii de aplicații datorită formatului său intuitiv și standardizat. Aceste trăsături le permit dezvoltatorilor să construiască, să testeze și să implementeze soluții cu flexibilitate și scalabilitate.
Docker mai are și o altă semnificație în industria IT - există o companie reală numită Docker, Inc. Compania dezvoltă instrumente care să funcționeze în cadrul platformei. Este important de remarcat această diferență, având în vedere denumirea interschimbabilă.
Dacă Docker este un singur container, Kubernetes este un instrument pentru gestionarea simultană a mai multor containere. Ca și Docker (platforma, nu compania), Kubernetes este o platformă open source, deși este administrată de Cloud Native Computing Foundation ca proiect cu peste 2.300 de colaboratori. Kubernetes funcționează ca un sistem de operare pentru cloud, raționalizând și simplificând managementul mai multor mașini virtuale și cloud-uri, astfel încât departamentele IT să poată gestiona lucrurile la scară largă.
De ce este capabil Kubernetes? Kubernetes funcționează în mod similar cu orice tip de management al sistemului de pe un sistem local, doar că la scara unui container. Asigurarea accesului, actualizările, programările, ștergerile și monitorizarea generală a stării de sănătate sunt toate accesibile prin Kubernetes. Pentru a reveni la analogia cu IKEA, dacă un container este un singur birou, atunci Kubernetes este ca un manager de facilități care permite comandarea, distribuirea și verificarea stării birourilor, scaunelor și a altor tipuri de mobilier din depozitul IKEA.
O piesă care lipsește din orice discuție despre Docker și Kubernetes este definiția timpilor de execuție ai containerelor. Ce este un runtime de container? Pe scurt, este motorul care face să funcționeze containerul - revenind la analogia cu IKEA, timpii de execuție ai containerului sunt instrucțiunile de asamblare din interiorul cutiei. În unele cazuri, acest lucru este simplu, iar execuția este gestionată în cadrul a ceea ce se numește un timp de execuție de nivel scăzut al containerului. Pentru situații mai complexe, timpii de execuție de nivel înalt pentru containere oferă direcții pentru integrarea API, formate de imagine și posibilități de management al imaginilor. În unele cazuri, termenul poate fi utilizat în mod interschimbabil cu Docker, deși există ceva mai multe nuanțe decât atât.
Kubernetes rulează un API cunoscut sub numele de Container Runtime Interface (CRI). Aceasta se interconectează cu fiecare timp de execuție a containerului pentru a executa pachetul. Din nou, folosind analogia cu IKEA, CRI din Kubernetes este persoana care citește instrucțiunile de asamblare (timpul de execuție al containerului) în cadrul pachetului (container).
Există și alte runtime-uri pentru containere, în afară de Docker. Alte două runtime-uri populare sunt:
Containerd: Containerd a început ca parte a proiectului Docker. Cu toate acestea, scopul a fost de a face Docker mai flexibil și mai modular, așa că dezvoltatorii au ales să separe Containerd ca proiect de sine stătător. Containerd se ocupă de nevoile de nivel înalt ale timpului de execuție al containerelor, cum ar fi extragerea imaginilor din registre, managementul imaginilor și integrarea cu timpii de execuție de nivel inferior pentru a executa procesul de container.
CRI-O: CRI-O este o altă alternativă open-source la Docker pentru rularea containerelor. Acesta implementează Kubernetes Container Runtime Interface (CRI) pentru a permite runtime-uri care sunt compatibile cu standardul Open Container Initiative.
Atât CRI-O, cât și Containerd utilizează specificațiile furnizate de CRI, ceea ce le face perfect compatibile cu Kubernetes.
Se discută adesea despre „Docker în comparație cu Kubernetes”, dar adevărul este că cele două platforme nu se află în competiție directă una cu alta. Analogia IKEA folosită pe parcursul acestui articol arată modul în care se corelează acestea și importanța lor pentru realizarea unui management IT modern, dar și faptul nu sunt în niciun caz concurente. Dimpotrivă, acestea fac parte din ecosistemul nativ cloud. Containerele Docker fac parte din sfera de management a Kubernetes, iar avantajul specific Kubernetes este capacitatea de a mări cu ușurință volumul de containere Docker.
Prin urmare, întrebarea nu este „Ce aleg, între Docker și Kubernetes?”. Dimpotrivă, principalul considerent pentru managerii IT este cum vor folosi Kubernetes și Docker împreună în ceea ce privește managementul și operațiunile.
Kubernetes și Docker sunt concepute pentru a funcționa împreună. Deși nu este necesar să utilizați Kubernetes pentru a gestiona o implementare Docker, acestea lucrează eficient împreună în situațiile în care trebuie gestionate mai multe instanțe de implementare. Acest lucru este valabil în special în situațiile în care se utilizează mai multe implementări ale aceleiași aplicații, precum și atunci când este necesară extinderea. Natura open-source a sistemului de orchestrare Kubernetes asigură o platformă susținută în permanență, care administrează complexitatea de pe mai multe servere.
Din Kubernetes pot fi implementate și administrate numeroase pachete Docker, prin intermediul unor funcții precum procesarea pe loturi a patch-urilor și actualizărilor și monitorizarea la scară largă a problemelor, totul în timp ce gestionează solicitările exprese. Cu ajutorul Kubernetes, departamentele IT pot:
Oracle Cloud Infrastructure oferă o serie de servicii pentru a accelera și construi aplicații moderne native în cloud. În mod deosebit, Container Engine for Kubernetes și Container Registry - care administrează și analizează imaginile Docker - sunt instrumente puternice și gratuite (incluse) care simplifică managementul și cresc performanța. Constatați pe cont propriu, testând gratuit Oracle Cloud pentru a accesa Kubernetes.
În urma închiderii în martie 2020 a Parcului Arheologic Pompei din Italia, orice plan de redeschidere a necesitat o măsură de management și control pentru a asigura distanțarea socială. Planurile au fost elaborate pentru a le permite turiștilor să acceseze o nouă aplicație MyPompeii alimentată de o serie de produse Oracle selectate, pentru a accelera o soluție mobilă nativă în cloud, inclusiv Oracle Container Engine pentru Kubernetes și Oracle Container Registry.
Snap Vision, cu sediul la Londra, oferă tehnologie de căutare vizuală bazată pe inteligență artificială pentru a-i ajuta pe cumpărători să descopere hainele care le plac. Întrucât COVID-19 a forțat închiderea magazinelor fizice pentru perioade semnificative de timp, tehnologia Snap Vision le-a fost oferită comercianților cu amănuntul din Regatul Unit pentru a facilita crearea unei experiențe de cumpărături digitale. Extinderea a fost o provocare semnificativă, deși Snap Vision a reușit să găzduiască noi medii de vânzare cu amănuntul la un cost redus prin intermediul Oracle Cloud Infrastructure cu Kubernetes.