Fiind considerată adesea „sistemul de operare pentru cloud”, Kubernetes este o platformă open source pentru gestionarea clusterelor de aplicații și serviciilor containerizate. Dezvoltată în 2014 de inginerii Google Joe Beda, Brendan Burns și Craig McLuckie și devenind curând o sursă deschisă, platforma Kubernetes este un ecosistem înfloritor, nativ în cloud, de sine stătător. Astăzi, Kubernetes - cuvânt care înseamnă „timonier” sau „cârmaci” în greaca veche - este gestionată de Cloud Native Computing Foundation (CNCF), o componentă a Linux Foundation.
Kubernetes a fost primul proiect realizat de CNCF, devenind unul dintre proiectele cu cea mai rapidă dezvoltare din istorie. Kubernetes are în prezent peste 2.300 de contribuitori și este utilizată de nenumărate companii, mari și mici, inclusiv de jumătate dintre cele aflate în clasamentul Fortune 100.
Pentru început, iată câțiva termeni importanți legați de Kubernetes. Lista completă a termenilor este disponibilă pe pagina Glosar standard Kubernetes. De asemenea, puteți utiliza Fițuica pentru Kubernetes, care conține o listă de comenzi și marcaje kubectl utilizate frecvent.
Este un set de mașini, denumite individual noduri, utilizate pentru rularea aplicațiilor containerizate administrate de Kubernetes.
Este o mașină virtuală sau fizică. Un cluster constă dintr-un nod master și mai multe noduri worker.
Este o imagine care conține software și dependențele sale.
Este un singur container sau un set de containere care rulează pe un cluster Kubernetes.
Este un obiect care administrează aplicațiile replicate reprezentate de containere. Containerele sunt implementate pe nodurile unui cluster.
Asigură rularea simultană a unui anumit număr de containere.
Descrie modul de accesare a aplicațiilor reprezentate de un set de containere. Serviciile descriu de obicei containerele și load balancerele și pot fi utilizate pentru controlarea accesului intern și extern la un cluster.
KubeCon este conferința anuală a dezvoltatorilor și utilizatorilor Kubernetes. De la primul KubeCon, din 2015, care a avut 500 de participanți, KubeCon a devenit un eveniment important pentru comunitatea cloudului nativ. În 2019, ediția KubeCon din San Diego, California, a atras 12.000 de dezvoltatori și ingineri de sistem, care au salutat explozia ecosistemului open source din jurul platformei de orchestrare a cloud Kubernetes.
Deoarece dezvoltatorii implementează tot mai mult software pentru diverse medii de calcul utilizând diverse clouduri, medii de testare, laptopuri, dispozitive, sisteme de operare și platforme, problema încrederii în software este extrem de importantă. Aici intervin containerele: acestea împachetează o aplicație împreună cu întregul său mediu runtime. În acest sens, containerele sunt o formă de virtualizare, deoarece oferă o „bulă” pentru rularea aplicației, în care sunt incluse bibliotecile, dependențele și sistemele de operare corecte. Dar containerele sunt mai mici decât mașinile virtuale, deoarece conțin doar resursele de care are nevoie o aplicație și nimic mai mult.
Deși containerele Linux există din 2008, abia lansarea containerelor Docker, în 2013, le-a adus celebritatea. Interesul la fel de mare față de implementarea aplicațiilor containerizate - care conțin tot ce este necesar pentru funcționare - a creat, însă, o nouă problemă: gestionarea a mii de containere. Kubernetes orchestrează automat ciclul de viață al containerelor, distribuind containerele din infrastructura de găzduire. Kubernetes scalează resursele în sus sau în jos, în funcție de cerere. De asemenea, prevede, programează, șterge și monitorizează integritatea containerelor.
Principalele componentele ale Kubernetes sunt clusterele, nodurile și planul de control. Clusterele conțin noduri. Fiecare nod conține un set cu cel puțin o mașină worker. Nodurile găzduiesc containere care conțin elemente ale aplicației implementate. Planul de control administrează nodurile și containerele din cluster, adesea pe mai multe computere, pentru disponibilitate ridicată.
Planul de control conține:
Componentele nodului includ:
Cu containerele, puteți avea încredere că aplicațiile dumneavoastră sunt grupate împreună cu tot ce le trebuie pentru a rula. Dar, chiar dacă adăugați containere, care conțin adesea microservicii, le puteți administra și distribui automat, utilizând Kubernetes.
Cu ajutorul Kubernetes, organizațiile pot:
să scaleze automat; | să mute implementările în sus sau în jos, în funcție de cerere; |
să descopere servicii; | să găsească servicii containerizate prin intermediul adresei DNS sau IP; |
să echilibreze traficul; | să stabilizeze implementarea prin distribuirea traficului din rețea; |
să gestioneze spațiul de stocare; | să aleagă stocarea locală sau în cloud; |
să controleze versiunile; | să aleagă tipurile de containere pe care doresc să le ruleze și pe cele care să le înlocuiască, utilizând imagini sau resurse noi; |
să mențină securitatea; | să actualizeze în mod securizat parolele, tokenurile OAuth și cheile SSH corelate cu anumite imagini de containere. |
Deși tehnologia Kubernetes este extrem de versatilă și poate accepta orice tip de aplicație, poate fi dificil de înțeles și de utilizat. Kubernetes nu este întotdeauna soluția corectă pentru un anume volum de lucru, susțin mai mulți membri ai CNCF. Din acest motiv, ecosistemul Kubernetes conține o serie de instrumente native în cloud pe care organizațiile le-au creat pentru a rezolva anumite probleme legate de fluxurile de lucru.
Kubernetes implementează containere, nu coduri sursă, și nu generează aplicații. Pentru jurnalizare, middleware, monitorizare, configurare, CI/CD și multe alte activități de producție, veți avea nevoie de instrumente suplimentare. Acestea fiind spuse, platforma Kubernetes este extensibilă și s-a dovedit a fi potrivită pentru o gamă largă de cazuri de utilizare, de la avioanele cu reacție până la machine learning. De fapt, furnizorii de cloud, inclusiv Oracle, Google, Amazon Web Services și alții, au utilizat extensibilitatea Kubernetes pentru a crea serviciile Kubernetes gestionate, care reduc complexitatea operațiunilor și sporesc productivitatea dezvoltatorilor.
Infrastructura noastră cloud Container Engine for Kubernetes este un serviciu gestionat dedicat dezvoltatorilor, pe care îl puteți utiliza pentru a implementa aplicațiile containerizate în cloud. Utilizați Container Engine for Kubernetes atunci când echipa de dezvoltare are nevoie de o modalitate sigură de creare, implementare și gestionare a aplicațiilor native în cloud. Specificați resursele de calcul de care au nevoie aplicațiile, iar Container Engine for Kubernetes le alocă într-un tenancy Cloud Infrastructure existent.
Chiar dacă nu trebuie neapărat să utilizați un serviciu Kubernetes gestionat, Cloud Infrastructure Container Engine for Kubernetes este un mod simplu de a rula clustere cu disponibilitate ridicată beneficiind de controlul, securitatea și performanța caracteristice Oracle Cloud Infrastructure. Container Engine for Kubernetes acceptă ca noduri atât servere bare metal, cât și mașini virtuale și este certificat ca fiind conform cu CNCF. De asemenea, obțineți toate actualizările Kubernetes și mențineți compatibilitatea cu ecosistemul CNCF fără a depune eforturi suplimentare.
Oracle este membru Platinum al Cloud Native Computing Foundation (CNCF), o comunitate open source care conține zeci de proiecte de dezvoltare de software, organizate după nivelul de maturitate. Proiectele promovate (Kubernetes, Prometheus, Envoy, CoreDNS, containerd, Fluentd, Jaeger, Vitess, TUF și Helm) s-au dovedit a fi neprețuite pentru aspectele privind dezvoltarea nativă în cloud.
Kubernetes are un vast ecosistem de proiecte de suport, care au apărut în jurul său. Peisajul poate fi descurajant, iar căutarea de răspunsuri la întrebări simple vă poate conduce către piste false. Dar primii pași pe acest drum sunt simpli, iar de acolo puteți explora concepte avansate, după cum dictează nevoie dumneavoastră. Aflați cum să:
Dezvoltatorii care sunt nerăbdători să pornească primul lor proiect Kubernetes pot descărca portalul nostru pentru dezvoltatori, unde pot afla cum să își creeze prima aplicație Arm în Kubernetes sau să implementeze un cluster Kubernetes utilizând Cloud Shell.