Cosa è un Pod ?

Cosa è un Pod ? Sono le più piccole unità di calcolo distribuibili in Kubernetes, un sistema open source per la pianificazione, l’orchestrazione e la gestione dei container. Il nome riflette il fatto che le unità di calcolo di Kubernetes funzionano come i baccelli in natura, ad esempio i baccelli di pisello.

Come funziona tutto ciò in Kubernetes?
In Kubernetes, il termine “pod” descrive uno o più contenitori che operano insieme. Sebbene una unità di calcolo possa incapsulare molti container, ognuno ospita in genere un solo container o un numero ridotto di container strettamente integrati.

I pod risiedono sui nodi. Più pod possono condividere lo stesso nodo. I container all’interno di ciascun pod condividono le risorse di rete e di storage del nodo host, oltre alle specifiche che determinano l’esecuzione dei container.

I contenuti sono programmati e localizzati insieme, modellando un host logico specifico per l’applicazione. Gli utenti di Kubernetes dovrebbero ospitare container applicativi strettamente integrati nella stessa unità di calcolo perché, senza container, queste applicazioni o servizi verrebbero eseguiti sulla stessa macchina virtuale o fisica.

Il contesto condiviso di questa tecnologia è definito da aspetti dell’isolamento, come gli spazi dei nomi di Linux o i cgroup. Per una unità di calcolo individuale, le singole applicazioni possono essere ulteriormente isolate.

Gli operatori di Kubernetes possono esporre informazioni su pod, nodi e container utilizzando variabili d’ambiente. Le variabili d’ambiente di Kubernetes sono definite staticamente o scritte dall’utente.

Le variabili d’ambiente indicano all’applicazione nei contenitori dove trovare le risorse o come configurare un componente. Queste informazioni vengono iniettate nel contenitore in fase di esecuzione. Sebbene anche i nodi contengano variabili d’ambiente, queste non sono esposte ai container.

Gestione dei pod Kubernetes
Kubernetes supporta qualsiasi runtime di container compatibile con la Container Runtime Interface (CRI), come containerd e CRI-O.

Anche se gli utenti possono creare pod, il controller di Kubernetes di solito ne crea delle repliche per l’alta disponibilità o per lo scaling orizzontale. Ad esempio, quando l’utente richiede tre nuove istanze di una unità di calcolo, Kubernetes ne crea tre copie come risorse di livello API. Lo scheduler trova il nodo appropriato per ogni unità di calcolo in base alle politiche dell’utente Kubernetes e vi colloca gli stessi.

I contenitori all’interno di condividono un indirizzo IP e uno spazio di porte comuni. Possono scoprirsi a vicenda attraverso localhost. Le applicazioni assegnate allo stesso accedono a volumi condivisi, collegati a quel pod.

Questi consentono anche ai contenitori di comunicare utilizzando altri mezzi di comunicazione standard, come la memoria condivisa POSIX o i semafori System V. I contenitori in pod diversi hanno indirizzi IP diversi e non sono in grado di utilizzare il protocollo IPC (inter-process communication).

Tuttavia, le unità di Kubernetes possono facilmente comunicare tra loro attraverso i servizi. Ad esempio, se il front-end di un’applicazione risiede in una unità di calcolo su un nodo, il back-end di quell’applicazione può risiedere sullo stesso nodo, su un nodo diverso o in più istanze distribuite su vari nodi. Il pod front-end si connette semplicemente a un servizio che rappresenta il pod o i pod back-end.

Come vengono utilizzati i pod di Kubernetes?
In Kubernetes, i pod sono generalmente effimeri, così come i contenitori di applicazioni.

Gli utenti progettano un pod e gli assegnano un’identificazione univoca e requisiti di risorse. Il sistema può quindi programmare il pod su un nodo appropriato, specificando le impostazioni per la qualità del servizio, se desiderato. L’ unità di calcolo utilizza quel nodo finché la sessione non viene terminata o una unità di calcolo non viene cancellata.

Quando un nodo si spegne, le unità di calcolo ad esso collegati vengono programmati per l’eliminazione dopo un periodo di timeout. Una unità di calcolo individuale, contrassegnato da un identificatore unico, non può essere riprogrammato su un nuovo nodo, ma può essere copiato e sostituito con una le unità di calcolo identica. L’utente può riciclare lo stesso nome e lo stesso identificatore per il nuovo pod.

(fonte)

Innovaformazione, scuola informatica specialistica promuove lo sviluppo in cloud, in microservizi e la metodologia DevOps. Trovate alcuni corsi rivolti per le aziende di seguito:

INFO: info@innovaformazione.net – tel. 3471012275 (Dario Carrassi)

Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:

    Ti potrebbe interessare

    Articoli correlati