Arhitectura Kubernetes: tot ce trebuie să știți în 2022
Publicat: 2021-01-05Cuprins
Despre Kubernetes
Kubernetes este o platformă open-source cu caracteristici precum maximizarea resurselor, procesul de implementare și actualizare automată, scalare automată, auto-vindecare, rollback-uri și lansări automate și echilibrarea încărcăturii orchestratorilor de containere și descoperire de servicii, repornire automată, plasare automată, și auto-replicare, etc. Kubernetes nu este doar un orchestrator de containere; este, de asemenea, un sistem de operare pentru aplicații bazate pe cloud.
Este ca o platformă pentru rularea unei aplicații similare cu alte aplicații care rulează pe Windows, MacOS sau Linux cu o mai mare flexibilitate. Reduce sarcina orchestrarii și permite dezvoltatorilor să se concentreze complet asupra fluxurilor de lucru centrate pe container în scopul operațiunii de autoservire. Dezvoltatorii au avantajul unei automatizări la nivel foarte înalt în implementarea și gestionarea aplicațiilor. Poate fi integrat cu orice mediu pentru a îmbunătăți capacitățile.
Citiți: Salariul Kubernetes în India
Arhitectura Kubernetes
Arhitectura Kubernetes este formată din straturi: straturi superioare și inferioare. La acest individ, mașinile fizice sau virtuale sunt reunite într-un cluster. O rețea partajată este utilizată pentru comunicarea între fiecare server. Kubernetes are un master (cel puțin) care acționează ca un plan de control, un sistem de stocare distribuit. Nodurile multiple ale clusterului sunt cunoscute și sub numele de Kubelets.
- Stăpânul Kubernetes, planul de control, programează implementările, expune API-ul și gestionează întregul cluster Kubernetes.
- Nodul cluster rulează un container de rulare, un agent pentru comunicarea cu masterul și alte componente de monitorizare, înregistrare etc.
Arhitectura Kubernetes și componentele Kubernetes sunt ilustrate în imaginea de mai jos.
Sursă

Să aruncăm o privire la componentele Kubernetes .
Componentele Kubernetes
Maestru: Planul de control Kubernetes
Maestrul menține datele fiecărui obiect din Kubernetes. Deoarece gestionează întregul cluster, de aceea este numit Maestru. Controlează stările obiectelor, menține potrivirea stării reale a sistemului cu starea necesară, răspunde la modificări etc.
Acesta conține următoarele trei componente importante:
- Server API Kube: server API Kubernetes
- Kube- Scheduler: programare pod în nodurile de lucru
- Kube- Controller: gestionează replicarea podului
Dacă există mai multe noduri master, atunci aceste componente sunt replicate în toate nodurile master.
Orchestrarea ciclului de viață pentru diverse aplicații care includ actualizări, scalare etc. sunt realizate de API Server. Funcționează ca o poartă de acces pentru clienții care nu se află în cluster. Serverul API face autentificarea. De asemenea, acționează ca un intermediar pentru poduri și noduri.
Controlorul îndeplinește următoarele sarcini:
- Rularea buclelor de control de bază
- Efectuarea de modificări pentru starea de conducere către starea necesară.
- Urmărirea stării clusterului
De asemenea, oferă rutare, servicii de stocare, echilibrare a încărcăturii, servicii de rețea DNS, instanțe VM prin integrarea în cloud-urile publice. Diferitele controlere care conduc starea pentru autoscaling, noduri, servicii și poduri, spații de nume.
Programarea containerului în toate nodurile este realizată de Scheduler în cadrul clusterului; luând în considerare diferite limitări/garanții ale resurselor sau specificații anti-afinitate/afinitate.
Taxonomia planului de control Kubernetes este prezentată mai jos:
Sursă
Noduri de cluster: Kubelets
Kubeleturile sunt diferite mașini care sunt responsabile pentru rularea containerelor. Maestrul face managementul nodurilor cluster. Se mai numește și Minion. Nodurile clusterului sunt considerate controlerul principal al Kubernetes. Acesta conduce Docker, stratul de execuție al containerelor.
Acesta conține următoarele componente:
- Pod: Grup de containere
- Docker: tehnologie bazată pe containere, spațiu de utilizator al sistemului de operare
- Kubelet: agenți container care sunt responsabili pentru întreținerea setului de păstăi.
- Kube-proxy: direcționează traficul care intră într-un nod din serviciu.
Taxonomia Kubernetes Cluster Node este prezentată mai jos:
Sursă
Poduri și Servicii
Pod-urile sunt un concept important în Kubernetes cu care dezvoltatorii interacționează. Reprezintă procesul de rulare. Poate găzdui stive de aplicații care sunt integrate vertical, cum ar fi aplicațiile WordPress LAMP. Mai jos sunt prezentate diferite tipuri de pod:
Tip de pod | Funcționalitate |
ReplicaSet | Tip simplu Pod Asigură rularea podurilor fixe |
Implementare | O modalitate declarativă de gestionare a podurilor prin ReplicaSet![]() Sunt incluse actualizări și mecanisme de rollback. |
StatefulSet | Gestionează păstăile care ar trebui să persistă |
Daemonset | Se asigură că fiecare nod rulează o instanță pod. Gestionează serviciile cluster, cum ar fi redirecționarea jurnalelor și monitorizarea sănătății. |
CronJob și Job | Rulează joburi de scurtă durată ca programator |
Un pod poate consta dintr-un număr de containere și volume externe. Taxonomia podului este prezentată în diagrama de mai jos:
Sursă
Serviciile fac urmărirea Pod-urilor. Pentru definirea asocierilor de pod și servicii, se folosesc selectoare sau etichete în locul atribuirilor de adrese IP. Acest lucru simplifică adăugarea de pod-uri la service și lansarea de noi versiuni. Următoarele sunt diferitele tipuri de servicii:
Tip serviciu | Funcționalitate |
ClusterIP | Tip implicit; Expune serviciul pe un IP intern și face ca serviciul să fie accesibil |
NodePort | Permite dezvoltatorilor să-și configureze propriile echilibrare de încărcare |
Echilibrarea greutății | Automatizează configurarea acestora |
ExternalName | Folosit în mod obișnuit pentru crearea de servicii în Kubernetes. |
Implementarea tipică în cloud utilizată este tipul LoadBalancer. Kubernetes acceptă abstracția intrării de nivel înalt pentru a rezolva complexitatea. Utilizatorii pot afișa diferite servicii în cadrul aceleiași adrese IP utilizând aceleași echilibratori de încărcare.
Citiți mai multe: Openshift vs Kubernetes: diferența dintre Openshift și Kubernetes
Rețea Kubernetes
În cea mai mare parte , CNI (Interfață de rețea de containere) este folosită pentru a ascuns rețeaua de bază. Calico, o opțiune complet direcționată, poate fi de asemenea folosită. În ambele opțiuni, comunicarea se face pe o rețea de pod la nivel de cluster și este controlată de Calico sau Flannel (furnizor CNI). Containerele pot comunica într-un pod prin localhost fără nicio restricție. Mutarea de la surse externe la servicii sau poduri la servicii se face prin Kube-proxy.
Stocare persistentă
Un director care conține anumite date este denumit volume în Kubernetes. Directoarele sunt accesibile podurilor. Există multe tipuri de stocare în Kubernetes. Containerele din interiorul podului pot consuma orice spațiu de stocare. Serviciile publice cloud precum NFS, Amazon Elastic Block Store, Iscsi, CephFS etc. sunt folosite pentru montarea fișierelor și blocarea stocării pe un pod. PV-urile (PersistentVolumes) sunt obiecte la nivel de cluster care sunt legate de resursele de stocare existente.
Într-un spațiu de nume, cererea pentru un consum de stocare este inițiată de PersistentVolumeClaim. Diferitele stări ale PV sunt disponibile, legate, eliberate și eșuate. StorageClasses sunt stratul de abstractizare. Ea diferențiază calitatea de stocare de bază și separă diferite caracteristici. Pod-ul poate solicita o nouă stocare în mod dinamic cu ajutorul StorageClasses și PersistentVolumeClaim.
Sursă
Servicii de descoperire și publicare
În funcție de versiunea clusterului, Kubernetes depinde fie de Kube-DNS, fie de CoreDNS pentru descoperirea serviciilor. Aceste servicii DNS integrate creează, actualizează și elimină înregistrări DNS. Ajută aplicațiile să vizeze alte poduri și servicii printr-o schemă de denumire consecventă și simplă.
Exemplu ( Sursa )
Pentru un serviciu Kubernetes, înregistrarea DNS poate fi service.namespace.svc.cluster.local
Înregistrare DNS, un pod poate avea: 10.32.0.125.namespace.pod.cluster.local
Sursă
Spații de nume
Clusterul fizic care conține clustere virtuale se numește spații de nume. Oferă un mediu virtual separat pentru mai mulți utilizatori, împreună cu drepturile de acces corespunzătoare pentru obiectele Kubernetes.
Etichete
Etichetele sunt folosite pentru a diferenția resursele prezente într-un singur spațiu de nume. Atributele sunt definite prin perechi cheie sau valoare. Etichetele sunt folosite pentru maparea structurilor organizaționale peste obiecte Kubernetes. Poate descrie mediul, starea lansării, nivelul aplicației sau identificarea clienților. Împiedică legarea solidă a obiectelor.
Adnotări
Adnotările sunt folosite pentru adăugarea de bagaje arbitrare neidentificate sau metadate la obiecte. Este folosit ca instrument de configurare declarativ.

Trebuie citit: Kubernetes vs. Docker: Diferențele primare pe care ar trebui să le cunoașteți
Obțineți diplome de Inginerie software de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.
Concluzie
Tehnologia Kubernetes se dezvoltă rapid și este o soluție rentabilă pentru viitor. Oferă o mare stabilitate aplicațiilor.
Toate conceptele de bază ale arhitecturii Kubernetes și ale componentelor Kubernetes sunt explicate în acest articol.
Dacă sunteți interesat să aflați mai multe despre Kubernetes, Big Data, consultați programul Executive PG de la upGrad și IIIT-B în Dezvoltare software full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, peste 9 proiecte și misiuni, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.
