Architettura Kubernetes: tutto ciò che devi sapere nel 2022

Pubblicato: 2021-01-05

Sommario

A proposito di Kubernetes

Kubernetes è una piattaforma open source con funzionalità come massimizzazione delle risorse, processo di distribuzione automatica e aggiornamento, ridimensionamento automatico, riparazione automatica, rollback e rollout automatizzati e bilanciamento del carico degli agenti di orchestrazione dei contenitori e rilevamento dei servizi, riavvio automatico, posizionamento automatico, e replica automatica, ecc. Kubernetes non è solo un orchestratore di contenitori; è anche un sistema operativo per applicazioni basate su cloud.

È come una piattaforma per eseguire un'applicazione simile ad altre applicazioni eseguite su Windows, MacOS o Linux con maggiore flessibilità. Riduce il carico dell'orchestrazione e consente agli sviluppatori di concentrarsi completamente sui flussi di lavoro incentrati sui contenitori ai fini dell'operazione self-service. Gli sviluppatori hanno il vantaggio di un'automazione di altissimo livello nella distribuzione e nella gestione delle applicazioni. Può essere integrato con qualsiasi ambiente per migliorare le capacità.

Leggi: Salario Kubernetes in India

Architettura di Kubernetes

L'architettura di Kubernetes è composta da livelli: livelli superiori e inferiori. In questo individuo, le macchine fisiche o virtuali sono riunite in un cluster. Una rete condivisa viene utilizzata per la comunicazione tra ciascun server. Kubernetes ha un master (almeno) che funge da piano di controllo, un sistema di storage distribuito. I nodi multipli del cluster sono anche noti come Kubelets.

  • Il master di Kubernetes, il piano di controllo, pianifica le distribuzioni, espone l'API e gestisce l'intero cluster Kubernetes.
  • Il nodo del cluster esegue un runtime del contenitore, un agente per la comunicazione con il master e altri componenti di monitoraggio, registrazione e così via.

L' architettura Kubernetes e i componenti Kubernetes sono illustrati nell'immagine seguente.

Fonte

Diamo un'occhiata ai componenti di Kubernetes .

Componenti Kubernetes

Maestro: Kubernetes Control Plane

Il master conserva i dati di ogni oggetto in Kubernetes. Poiché gestisce l'intero cluster, quindi è chiamato Master. Controlla gli stati degli oggetti, mantiene la corrispondenza dello stato reale del sistema con lo stato richiesto, risponde ai cambiamenti, ecc.

Contiene i seguenti tre componenti importanti:

  • Server API Kube : server API Kubernetes
  • Kube- Scheduler: pianificazione del pod nei nodi di lavoro
  • Controller Kube: gestisce la replica del pod

Se sono presenti più nodi master, questi componenti vengono replicati su tutti i nodi master.

L'orchestrazione del ciclo di vita per varie applicazioni che includono aggiornamenti, ridimensionamento e così via viene eseguita da API Server. Funziona come gateway per i client che non sono all'interno del cluster. Il server API esegue l'autenticazione. Agisce anche come intermediario per pod e nodi.

Il Titolare svolge i seguenti compiti:

  • Esecuzione dei cicli di controllo principali
  • Apportare modifiche per lo stato di guida verso lo stato richiesto.
  • Osservare lo stato del cluster

Offre inoltre routing, servizi di storage, bilanciamento del carico, servizi di rete DNS, istanze VM integrandosi nei cloud pubblici. I diversi controller che guidano lo stato per la scalabilità automatica, nodi, servizi e pod, spazi dei nomi.

La pianificazione del contenitore in tutti i nodi viene eseguita dall'Utilità di pianificazione all'interno del cluster; considerando diverse limitazioni/garanzie delle risorse o specifiche di anti-affinità/affinità.

La tassonomia del piano di controllo di Kubernetes è mostrata di seguito:

Fonte

Nodi cluster: Kubelets

I kubelet sono macchine diverse che sono responsabili dell'esecuzione dei container. Il master esegue la gestione dei nodi del cluster. Si chiama anche Minion. I nodi del cluster sono considerati il ​​controller principale di Kubernetes. Guida Docker, il livello di esecuzione dei contenitori.

Contiene i seguenti componenti:

  • Pod: Gruppo di contenitori
  • Docker: tecnologia basata su container, spazio utente del sistema operativo
  • Kubelet: agenti container responsabili della manutenzione del set di pod.
  • Kube-proxy: instrada il traffico in arrivo in un nodo dal servizio.

La tassonomia dei nodi del cluster Kubernetes è mostrata di seguito:

Fonte

Baccelli e servizi

I pod sono un concetto importante in Kubernetes con cui gli sviluppatori interagiscono. Rappresenta il processo in esecuzione. Può ospitare stack di applicazioni integrati verticalmente come le applicazioni LAMP di WordPress. Di seguito sono riportati diversi tipi di pod:

Tipo di baccello Funzionalità
ReplicaSet Tipo di baccello semplice

Garantisce il funzionamento dei pod fissi

Distribuzione Una gestione del pod in modo dichiarativo tramite ReplicaSet

Sono inclusi aggiornamenti in sequenza e meccanismi di rollback.

StatefulSet Gestisce i pod che dovrebbero persistere
Demonset Garantisce che ogni nodo esegua un'istanza pod.

Gestisce i servizi del cluster come l'inoltro dei log e il monitoraggio dello stato.

CronJob e Job Esegue lavori di breve durata come utilità di pianificazione

Un pod può essere costituito da più contenitori e volumi esterni. La tassonomia del pod è mostrata nel diagramma seguente:

Fonte

I servizi effettuano il tracciamento dei pod. Per definire le associazioni di pod e servizi, vengono utilizzati selettori o etichette invece delle assegnazioni di indirizzi IP. Ciò semplifica l'aggiunta di pod al servizio e il rilascio di nuove versioni. Di seguito sono riportati i diversi tipi di servizio:

tipo di servizio Funzionalità
ClusterIP Tipo predefinito; Espone il servizio su un IP interno e rende il servizio raggiungibile
NodePort Consente agli sviluppatori di configurare i propri sistemi di bilanciamento del carico
Load Balancer Automatizza la loro configurazione
Nome esterno Comunemente utilizzato per la creazione di servizi all'interno di Kubernetes.

La tipica distribuzione cloud utilizzata è il tipo LoadBalancer. Kubernetes supporta l'astrazione di Ingress di alto livello per risolvere la complessità. Gli utenti possono visualizzare servizi diversi all'interno dello stesso indirizzo IP utilizzando gli stessi bilanciatori di carico.

Per saperne di più: Openshift Vs Kubernetes: differenza tra Openshift e Kubernetes

Rete Kubernetes

Per lo più CNI (Container Network Interface) viene utilizzato per oscurare la rete di base. È possibile utilizzare anche Calico, un'opzione completamente instradata. In entrambe le opzioni, la comunicazione avviene su una rete pod a livello di cluster e controllata da Calico o Flannel (provider CNI). I contenitori possono comunicare all'interno di un pod su localhost senza alcuna restrizione. Il movimento da fonti esterne a servizi o da pod a servizi avviene tramite Kube-proxy.

Archiviazione persistente

Una directory con alcuni dati viene chiamata Volumi in Kubernetes. Le directory sono accessibili ai pod. Esistono molti tipi di archiviazione in Kubernetes. I contenitori all'interno del pod possono consumare qualsiasi spazio di archiviazione. I servizi cloud pubblici come NFS, Amazon Elastic Block Store, Iscsi, CephFS, ecc. vengono utilizzati per il montaggio di file e l'archiviazione a blocchi su un pod. I PV (PersistentVolumes) sono oggetti a livello di cluster legati alle risorse di storage esistenti.

All'interno di uno spazio dei nomi, la richiesta per un consumo di archiviazione viene avviata da PersistentVolumeClaim. I diversi stati di PV sono disponibili, vincolati, rilasciati e non riusciti. Le StorageClasses sono il livello di astrazione. Differenzia la qualità di archiviazione sottostante e separa varie caratteristiche. Il pod può richiedere un nuovo spazio di archiviazione in modo dinamico con l'aiuto di StorageClasses e PersistentVolumeClaim.

Fonte

Servizi di scoperta e pubblicazione

A seconda della versione del cluster, Kubernetes dipende da Kube-DNS o CoreDNS per l'individuazione dei servizi. Questi servizi DNS integrati creano, aggiornano e rimuovono i record DNS. Aiuta le applicazioni a indirizzare altri pod e servizi attraverso uno schema di denominazione semplice e coerente.

Esempio ( Fonte )

Per un servizio Kubernetes, il record DNS può essere service.namespace.svc.cluster.local

Record DNS, un pod può avere: 10.32.0.125.namespace.pod.cluster.local

Fonte

Spazi dei nomi

Il cluster fisico contenente i cluster virtuali è chiamato namespace. Fornisce un ambiente virtuale separato a più utenti insieme ai rispettivi diritti di accesso per gli oggetti Kubernetes.

Etichette

Le etichette vengono utilizzate per differenziare le risorse presenti in un unico spazio dei nomi. Gli attributi sono definiti da coppie di chiavi o valori. Le etichette vengono utilizzate per mappare le strutture organizzative su oggetti Kubernetes. Può descrivere l'ambiente, lo stato di rilascio, il livello dell'app o l'identificazione dei clienti. Impedisce l'hard linking di oggetti.

Annotazioni

Le annotazioni vengono utilizzate per aggiungere agli oggetti bagagli o metadati arbitrari non identificati. Viene utilizzato come strumento di configurazione dichiarativo.

Da leggere: Kubernetes vs. Docker: differenze primarie che dovresti conoscere

Ottieni lauree in ingegneria del software dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Conclusione

La tecnologia di Kubernetes si sta sviluppando rapidamente ed è una soluzione conveniente per il futuro. Offre grande stabilità alle applicazioni.

Tutti i concetti di base dell'architettura Kubernetes e dei componenti Kubernetes sono spiegati in questo articolo.

Se sei interessato a saperne di più su Kubernetes, sui big data, dai un'occhiata al programma Executive PG di upGrad e IIIT-B in Full-stack Software Development , progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, oltre 9 progetti e incarichi, status di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Prepararsi per una carriera del futuro

Richiedi ora il programma Executive PG in Full Stack Development