Tutorial Kubernetes pentru începători: elemente de bază, caracteristici, Architectură
Înainte de a începe acest tutorial Kubernetes, să învățăm:
Ce este Kubernetes?
Kubernetes este un sistem de management al containerelor dezvoltat pe platforma Google. Kubernetes ajută la gestionarea aplicațiilor containerizate în diferite tipuri de medii fizice, virtuale și cloud. Google Kubernetes este un instrument container extrem de flexibil pentru a furniza în mod constant aplicații complexe care rulează pe clustere de la sute la mii de servere individuale.
De ce ai nevoie de containere?
Utilizatorul de internet de astăzi nu acceptă niciodată timpi de nefuncționare. Prin urmare, dezvoltatorii trebuie să găsească o metodă pentru a efectua întreținere și actualizare fără a-și întrerupe serviciile.
Prin urmare container, care este medii izolate. Include tot ceea ce este necesar pentru rularea aplicației. Îi face ușor pentru un dezvoltator să editeze și să implementeze aplicații. Mai mult, containerizarea a devenit o metodă preferată pentru ambalarea, implementarea și actualizarea aplicațiilor web.
Ce sarcină este îndeplinită de Kubernetes?
Kubernetes este nucleul Linux care este folosit pentru sistemele distribuite. Vă ajută să fiți abstracti hardware-ul de bază al nodurilor (serverelor) și oferă o interfață consistentă pentru aplicațiile care consumă resursele partajate.
De ce să folosiți Kubernetes?
Kubernetes vă ajută să controlați alocarea resurselor și gestionarea traficului pentru aplicațiile cloud și microservicii. De asemenea, ajută la simplificarea diferitelor aspecte ale infrastructurilor orientate spre servicii. Kubernetes vă permite să vă asigurați unde și când rulează aplicațiile containerizate și vă ajută să găsiți resurse și instrumente cu care doriți să lucrați.
Caracteristicile Kubernetes
Iată care sunt caracteristicile esențiale Kubernetes:
- Programare automată
- Capacități de auto-vindecare
- Lansări automate și rollback
- Scalare orizontală și echilibrare a sarcinii
- Oferă consecvență mediului pentru dezvoltare, testare și producție
- Infrastructura este slab cuplată la fiecare componentă poate acționa ca o unitate separată
- Oferă o densitate mai mare de utilizare a resurselor
- Oferă funcții pregătite pentru întreprindere
- Management centrat pe aplicație
- Infrastructură auto-scalabilă
- Puteți crea o infrastructură previzibilă
Bazele Kubernetes
Acum, în acest tutorial Kubernetes, vom învăța câteva elemente de bază importante ale Kubernetes:
-
Cluster
Este o colecție de gazde (servere) care vă ajută să vă agregați resursele disponibile. Aceasta include ram, CPU, ram, disc și dispozitivele acestora într-un pool utilizabil.
-
Maestru
Master este o colecție de componente care alcătuiesc panoul de control al Kubernetes. Aceste componente sunt utilizate pentru toate deciziile de cluster. Include atât programarea, cât și răspunsul la evenimentele cluster.
-
Nod
Este o singură gazdă care este capabilă să ruleze pe o unitate fizică sau mașină virtuală. Un nod ar trebui să ruleze atât kube-proxy, minikube, cât și kubelet, care sunt considerate ca parte a clusterului.
-
Spațiu de nume
Este un cluster logic sau un mediu. Este o metodă utilizată pe scară largă, care este utilizată pentru stabilirea accesului sau împărțirea unui cluster.
Kubernetes Architectură
Mai jos este o diagramă detaliată a arhitecturii Kubernetes:
Nodul principal
Nodul principal este prima și cea mai vitală componentă care este responsabilă de gestionarea clusterului Kubernetes. Este punctul de intrare pentru toate tipurile de sarcini administrative. Este posibil să existe mai mult de un nod master în cluster pentru a verifica toleranța la erori.
Nodul principal are diverse componente precum API Server, Controller Manager, Scheduler și ETCD. Să le vedem pe toate.
Server API: Serverul API acționează ca un punct de intrare pentru toate comenzile REST utilizate pentru controlul clusterului.
Scheduler
Planificatorul programează sarcinile către nodul slave. Stochează informațiile de utilizare a resurselor pentru fiecare nod slave. Este responsabil pentru distribuirea volumului de muncă.
De asemenea, vă ajută să urmăriți modul în care sarcina de lucru este utilizată pe nodurile cluster. Vă ajută să plasați volumul de muncă pe resursele care sunt disponibile și să acceptați volumul de muncă.
etcd
Componentele etcd stochează detalii de configurare și valori Wright. Comunică cu cele mai multe componente pentru a primi comenzi și a lucra. De asemenea, gestionează regulile de rețea și activitatea de redirecționare a porturilor.
Noduri lucrător/sclav
Nodurile de lucru sunt o altă componentă esențială care conține toate serviciile necesare pentru gestionarea rețelei dintre containere, comunicarea cu nodul master, ceea ce vă permite să atribuiți resurse containerelor programate.
- Kubelet: primește configurația unui Pod de pe serverul API și se asigură că containerele descrise sunt în funcțiune.
- Container Docker: Docher container rulează pe fiecare dintre nodurile de lucru, care rulează podurile configurate
- Kube-proxy: Kube-proxy acționează ca echilibrator de încărcare și proxy de rețea pentru a efectua servicii pe un singur nod de lucru
- Pod-uri: un pod este o combinație de containere unice sau multiple care rulează logic împreună pe noduri
Alte terminologii cheie
Controlere de replicare
Un controler de replicare este un obiect care definește un șablon pod. De asemenea, controlează parametrii pentru a scala replici identice ale Podului pe orizontală prin creșterea sau scăderea numărului de copii care rulează.
Seturi de replicare
Seturile de replicare sunt o interacțiune asupra designului controlerului de replicare cu flexibilitate în modul în care controlerul recunoaște podurile pe care este menit să le gestioneze. Înlocuiește controlerele de replicare datorită capacității lor mai mari de selecție de replicare.
Implementări
Implementarea este o sarcină de lucru comună care poate fi creată și gestionată direct. Implementarea utilizează setul de replicare ca element de bază care adaugă caracteristica de management al ciclului de viață.
Seturi cu stare
Este un control specializat al podului care oferă comandă și unicitate. Este folosit în principal pentru a avea un control fin, de care aveți o nevoie specială în ceea ce privește ordinea de implementare, rețea stabilă și date persistente.
Seturi Daemon
Seturile de demoni sunt o altă formă specializată de controler pod care rulează o copie a unui pod pe fiecare nod din cluster. Acest tip de controler pod este o metodă eficientă de implementare a pod-urilor care vă permite să efectuați întreținere și oferă servicii pentru nodurile în sine.
Kubernetes vs. Docker Swarm
Iată diferențe importante între Kubernetes vs Docker.
Parametru | Docker roi | Kubernetes |
---|---|---|
Scalarea | Fără autoscaling | Scalare automată |
Echilibrarea sarcinii | Echilibrarea automată a sarcinii | Configurați manual setările de echilibrare a sarcinii |
Partajarea volumului de stocare | Partajează volumele de stocare cu orice alt container | Partajează volumele de stocare între mai multe containere în interiorul aceluiași Pod |
Utilizarea instrumentului de conectare și monitorizare | Utilizați 3rd instrument de petrecere ca ELK | Furnizați un instrument încorporat pentru înregistrare și monitorizare. |
Instalare | Ușor și rapid | Complicat și consumator de timp |
GUI | GUI nu este disponibil | GUI este disponibil |
scalabilitate | Creșterea este mai rapidă decât K8S, dar puterea clusterului nu este la fel de robustă | Creșterea este lentă în comparație cu Swarm, dar garantează o stare mai puternică a clusterului. Echilibrarea sarcinii necesită o configurare manuală a serviciului |
Load Balancing | Oferă o tehnică încorporată de echilibrare a sarcinii | Programarea proceselor pentru a menține serviciile în timpul actualizării |
Actualizări și reduceri ale volumului de date Înregistrare și monitorizare | Actualizări progresive și monitorizare a stării de sănătate a serviciului. | Partajat numai cu containerele din aceleași instrumente de înregistrare și monitorizare încorporate în pod. |
Avantajele Kubernetes
- Organizare ușoară a serviciului cu poduri
- Este dezvoltat de Google, care aduce ani de experiență valoroasă în industrie
- Cea mai mare comunitate dintre instrumentele de orchestrare a containerelor
- Oferă o varietate de opțiuni de stocare, inclusiv on-premise, SAN și cloud public
- Aderă la principiile infrastructurii imuabile
- Kubernetes poate rula on-premise bare metal, OpenStack, nori publici Google, Azure, AWS, Etc
- Vă ajută să evitați problemele de blocare a furnizorului, deoarece poate utiliza orice API-uri sau servicii specifice furnizorului, cu excepția cazului în care Kubernetes oferă o abstractizare, de exemplu, echilibrarea încărcăturii și stocarea.
- Containerizarea folosind kubernetes permite software-ului pachetului să servească aceste obiective. Acesta va permite aplicațiile care trebuie să fie lansate și actualizate fără timp de nefuncționare.
- Kubernetes vă permite să vă asigurați că acele aplicații containerizate rulează unde și când doriți și vă ajută să găsiți resurse și instrumente pe care doriți să le lucrați.
Dezavantajele Kubernetes
- Tabloul de bord Kubenetes nu este atât de util pe cât ar trebui
- Kubernetes este puțin complicat și inutil în mediile în care toată dezvoltarea se face local.
- Securitatea nu este foarte eficientă.
Rezumat
- Container ajută o organizație să efectueze întreținere și actualizare fără a întrerupe serviciile
- Kubernetes este un exemplu de sistem de management al containerelor dezvoltat pe platforma Google.
- Cel mai mare avantaj al utilizării Kubernetes este că poate rula on-premises OpenStack, nori publici Google, Azure, AWS etc.
- Kubernetes oferă capabilități automate de programare și auto-vindecare.
- Cluster, master, node și namespace sunt elemente de bază importante pentru kubernetes
- Nodul principal și nodul de lucru sunt componente importante ale arhitecturii Kubernetes.
- Controlere de replicare, seturi de replicare, implementări, seturi stateful, seturi de demoni sunt alți termeni importanți utilizați în Kubernetes.
- Docker Swarm nu permite scalarea automată, în timp ce Kubernetes permite scalarea automată.
- Cel mai mare dezavantaj al Kubenetes este că tabloul de bord nu este foarte util și eficient