Tot mai multe sisteme IT sunt create folosind containere. Containerizarea implică plasarea componentelor aplicației (procesele, dependențele, bibliotecile, fișierele de configurare sau bazele de date locale) în câteva sau mai multe “colecții” numite containere. Aceasta combină avantajele virtualizării și menținerii sistemului pe un server fizic. Adică, oferă scalabilitate, portabilitate software rapidă și ușoară și separarea instanțelor, menținând în același timp o performanță ridicată.
Având numai câteva containere, acestea pot fi controlate manual, dar în cazul a sute sau mii de containere distribuite și gestionate dinamic, controlul poate fi dificil. Răspunsul la această problemă este orchestrația, adică introducerea automatizării, administrarea grupurilor și monitorizarea containerelor. Cel mai popular instrument pentru orchestrație este Kubernetes.
Ce este Kubernetes?
Kubernetes este o platformă open source care servește la administrarea containerelor pe scară largă.
Denumirea provine din limba greacă – “κυβερνήτης” înseamnă timonier, ceea ce explică perfect scopul platformei. Kubernetes este numit, de asemenea, K8s, o abreviere în care opt litere “ubernete” au fost înlocuite cu cifra “8”.
Instrumentul a fost creat de Google în urmă cu aproape 20 de ani pentru a administra lucrările mediului de producție al companiei. În anul 2014, proiectul a fost predat organizației Cloud Native Computing Foundation și a fost făcut public – de atunci, platforma este dezvoltată continuu de organizație și de companiile și specialiștii care utilizează Kubernetes (în proiectele open source se pot implica și utilizatorii).
K8s suportă automatizarea implementărilor, scalarea aplicațiilor, gestionarea containerelor, monitorizarea proceselor și modificărilor. Proprietarii de aplicații și echipele de dezvoltare care utilizează platforma se pot concentra mai mult pe dezvoltarea produsului lor decât pe lucrările DevOps (gestionarea infrastructurii și adaptarea produsului la cerințele acesteia). Kubernetes permite administrarea clusterelor (grupuri de servere care colaborează), astfel încât acestea să arate, din perspectiva utilizatorului, în termeni simpli, ca o singură mașină. K8s elimină obligația dezvoltatorului de a adapta aplicația la cerințele infrastructurii – specialistul comandă lansarea aplicației, iar Kubernetes poate împărți singur serviciile între clustere, servere și le poate direcționa spre containerele corespunzătoare. Kubernetes are propria sa formă de load-balancing care este o tehnică de dispersare (echilibrare) a sarcinilor între mai multe mașini.
K8s este suportat de majoritatea cloud-urilor publice, inclusiv de Google Cloud Platform.
Vezi și:
- Ce este Google Cloud Platform și cum suportă afacerile?
- Cum să creați și să configurați un cont Google Cloud Platform?
Centralizare
Platforma Kubernetes permite administrarea tuturor clusterelor, serverelor și containerelor dintr-un singur loc, indiferent unde se află mașinile sau componentele aplicației. Aceasta suportă planificarea în grup, implementarea, scalarea și gestionarea ciclului de viață al elementelor.
Scalabilitate
La baza K8s stă scalabilitatea – instrumentul a fost creat de Google pentru a lansa miliarde de containere pe săptămână. Indiferent de numărul de acțiuni efectuate, de mașini utilizate sau de containere deținute, nu este nevoie să extindeți sau să micșorați echipa DevOps. Aveți, de asemenea, posibilitatea să scalați orizontal și să reduceți necesarul de resurse prin comenzi sau prin interfața utilizatorului sau automat pe baza utilizării procesorului.
Diverse soluții de infrastructură
Kubernetes lucrează împreună cu infrastructura de pe servere fizice, soluții cloud și hibride (combinație între un centru local și cloud). Acesta este suportat de diverși furnizori de cloud-uri publice, inclusiv Google Cloud Platform, Amazon Web Services și Microsoft Azure.
Coerența între medii
După lansarea aplicației pe platformă, aceasta devine o aplicație portabilă. Aplicația poate fi mutată între medii (cum ar fi dezvoltare, testare, producție) și între soluții de infrastructură, menținând în același timp coerența aplicației.
Prevenirea defecțiunilor și auto-repararea
K8s face modificări treptat, monitorizând constant starea fiecărei instanțe. Dacă ceva nu merge bine, Kubernetes retrage automat modificările. Dacă un container prezintă o eroare, instrumentul îl înlocuiește cu altul, lucrând în același timp la restabilirea funcționării și eliminând elementele inutile.
Dezvoltarea continuă a platformei
Kubernetes este un proiect open source. În dezvoltarea sa sunt implicați nu numai proprietarii, ci și persoanele care folosesc platforma zilnic: dezvoltatori, specialiști DevOps, companii de software. Aceștia creează elemente noi sau propun implementarea de îmbunătățiri ale proceselor și instrumentelor existente.
Exemple de utilizare a Kubernetes
Platforma este utilizată de companiile cu servicii avansate care administrează cantități mari de date, axate pe dezvoltare rapidă și fără probleme.
- CERN (The European Organization for Nuclear Research) stochează în prezent aproximativ 300 de petabytes de date, iar acest numărul continuă să crească (se estimează că în câțiva ani la CERN vor exista de 10 ori mai multe date). În plus, organizația are vârfuri de încărcare sezoniere și trebuie să aibă posibilități de scalare. CERN utilizează o infrastructură hibridă – stochează și procesează zilnic date pe servere locale și scalează soluția în cloud, dacă este necesar. Efectuarea orchestrației containerelor cu Kubernetes a permis organizației să automatizeze complet deservirea aplicațiilor, să simplifice procesul de implementare și să accelereze dezvoltarea tehnologică, printre altele, reducând timpul necesar pentru adăugarea unui cluster de la mai mult de 3 ore la 15 minute, și un nod nou (mașini într-un cluster) de la mai mult de 30 de minute la 2 minute.
- Nokia dezvoltă produse și soluții legate de rețeaua de telecomunicații și oferă soluții pentru mulți operatori. Companiile partenere Nokia au diferite soluții de infrastructură: unele folosesc centre de date locale (servere fizice), altele folosesc mașini virtuale sau cloud, alte companii folosesc soluții hibride. Scopul companiei Nokia este de a oferi partenerilor o soluție pe deplin eficientă, fără a fi nevoie de ajustarea produsului de fiecare dată pentru o infrastructură diferită. Prin utilizarea Kubernetes, aceștia sunt în măsură să creeze produse care pot rula în orice mediu. K8s suportă, de asemenea, adăugarea de noi funcționalități și derularea de teste fără a le separa în mediul țintă, economisind astfel câteva sute de ore la fiecare implementare.
- Adidas își dezvoltă serviciul de e-commerce folosind oportunitățile oferite de Kubernetes. Înainte ca firma să înceapă să folosească K8s, introducerea modificărilor era laborioasă, iar implementările erau adesea blocate în etapa DevOps – de exemplu, pentru a accesa mașina virtuală, dezvoltatorii trebuiau să aștepte între 30 de minute până la o săptămână. După containerizarea serviciului și rularea Kubernetes, dezvoltatorii se pot concentra pe crearea de noi funcționalități în loc să adapteze sistemul în detaliu la cerințele de infrastructură sau să aștepte suportul DevOps. Înainte, versiunile noi erau făcute o dată la fiecare 4-6 săptămâni, acum acestea sunt introduse de mai multe ori pe zi.
Posibilitățile Kubernetes sunt utilizate, de asemenea, de Booking.com, BlaBlaCar, ING Group și Zalando.
Kubernetes pe Google Cloud Platform – tutorial
Primul pas este intrarea în consola Google Cloud: https://console.cloud.google.com/.
Creați un proiect nou (faceți clic pe numele proiectului de lângă textul “Google Cloud Platform” din colțul din stânga sus).
Completați numele proiectului și faceți clic pe Create.
Revenind la lista de proiecte (butonul de lângă textul “Google Cloud Platform”) veți primi ID-ul proiectului. Acesta va fi necesar în etapele următoare.
Deschideți Cloudshell (colțul din dreapta sus).
Folosind comanda de mai jos, setați proiectul la care veți lucra:
gcloud config set project k8s-demo-281313
Aveți grijă să introduceți în comandă ID-ul proiectului dvs. – acesta poate fi diferit de cel din exemplul dat.
Mai departe, setați regiunea în care doriți să implementați aplicația:
gcloud config set compute/zone europe-west3-c
Lista regiunilor se află aici: https://cloud.google.com/about/locations#europe
Creați un cluster folosind comanda:
gcloud container clusters create my-cluster--num-nodes=1
Steagul –num-nodes permite setarea numărului de node-uri (mașini fizice sau virtuale) din cluster. Mai multe informații despre steag pot fi găsite sub linkul: https://cloud.google.com/sdk/gcloud/reference/container/clusters/create#–num-nodes
Această operație poate dura câteva minute.
După terminarea operației, veți obține un tabel în Cloudshell care va afișa parametrii clusterului.
Acum folosiți comanda:
gcloud container clusters get-credentials my-cluster
Comanda actualizează fișierul kubeconfig cu referințele și informațiile corespunzătoare pentru a continua lucrul cu clusterul.
Pentru a implementa aplicația în cluster, folosiți comanda:
kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0
Steagul –image indică un link la o aplicație containerizată în serviciul Container Registry (GCR). Serviciul Container Registry permite stocarea imaginilor containerizate ale aplicației. Pentru mai multe informații despre GCR, consultați: https://cloud.google.com/container-registry
Aici se află codul sursă al aplicației hello-app pe care o implementați: https://github.com/GoogleCloudPlatform/kubernetes-engine-samples/blob/master/hello-app/main.go
Puteți implementa aplicația indicând o imagine containerizată din Container Registry.
Acum expuneți aplicația (expose). În acest scop, folosiți comanda:
kubectl expose deployment hello-server --type LoadBalancer \ --port 80 --target-port 8080
Mai multe informații despre kubectl pot fi găsite la: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#expose
Steagul –type indică tipul de implementare (ClusterIP, NodePort, LoadBalancer sau ExternalName). În acest caz, creați un LoadBalancer care va face aplicația disponibilă pe Internet.
Steagul –port indică portul prin care urmează să fie deservită aplicația.
Steagul –target-port indică portul din container spre care serviciul va direcționa traficul.
Apoi tastați comanda:
kubectl get service hello-server
Datorită acesteia veți obține IP-ul public al clusterului pe care ați implementat aplicația:
Iată rezultatul:
Pentru a șterge clusterul și a anula implementarea, utilizați următoarele comenzi:
kubectl delete service hello-server gcloud container clusters delete my-cluster
Acestea sunt bazele Kubernetes!
Kubernetes pe Google Cloud Platform – obțineți un voucher de 500 USD
Dacă doriți să testați posibilitățile Kubernetes și să cunoașteți Google Cloud Platform – o infrastructură cloud scalabilă cu multe propuneri tehnologice – contactați-ne. În calitate de partener oficial Google Cloud Premier Partner, vă garantăm un voucher de pornire în GCP de 500 USD, asistență tehnică completă și posibilitatea de plăti pentru serviciul cloud în lei.