Kubernetes

Kubernetes

Cos’è Kubernetes (chiamato anche K8s)

Kubernetes è come un ufficio postale, che gestisce ambienti containerizzati e si assicura che i pacchi vengano consegnati correttamente. Non importa la distanza, sia essa locale o estera, purché si conosca l’indirizzo del destinatario, l’ufficio postale si occuperà del resto. Tuttavia, la durata della consegna dipende dalle dimensioni del pacco e dalla sua distanza. L’obiettivo principale è sempre quello di garantire che il pacco venga consegnato dove deve essere consegnato.

Ora immaginate che Kubernetes sia un ufficio postale, ma solo per i container. Possiamo dichiarare tutto ciò che dobbiamo fare con i nostri container, ma non ci interessa come viene fatto. Gli ambienti containerizzati in Kubernetes sono come scatole e si chiamano pod. Ogni pod può contenere 1 o più container. Il pod contiene anche informazioni su chi è il destinatario, dove viene eseguito e il tempo di attesa per arrivarci. Inoltre, ogni pod ha un nome e un indirizzo IP unici. Infine, metteremo l’applicazione nella scatola e descriveremo come e dove questa scatola viene consegnata.

Curiosità: la parola Kubernetes in greco significa capitano o pilota.

Perché K8s

I vantaggi

Scalabilità

Un’altra fantastica caratteristica di Kubernetes è l’autoscaling, che consente alle aziende di scalare in base alle richieste effettive. Con l’autoscaling, Kubernetes può aiutarvi a monitorare e aumentare i pod quando il traffico aumenta e a ridurre il numero di pod quando il carico di traffico è basso. Inoltre, ciò consente di risparmiare sui costi, in quanto non si pagano le risorse che non si utilizzano.

Esempio

Se improvvisamente 100.000 utenti entrano in https://app.sca3.wpenginepowered.com, il nostro server deve scalare per gestire questa quantità di carico; K8s genera automaticamente altri pod (ad esempio 10-15 nuovi pod) per suddividere il carico dei 100.000 utenti. Quando il numero di utenti scende a 1.000 o 100, K8s elimina automaticamente i pod “extra” per aiutarci a risparmiare sui costi (perché non sono più necessari).

Alta disponibilità

In caso di downtime, se un nodo è fuori uso o un container non risponde, Kubernetes vi aiuterà a sostituire i container o a uccidere quelli che non rispondono al controllo di salute configurato. Di solito configuriamo almeno 2 nodi pronti per l’istanza del cliente per garantire la disponibilità. Grazie a questa configurazione, siamo in grado di eseguire la nostra distribuzione di produzione con tempi di inattività minimi o nulli per l’istanza del nostro cliente, poiché solo un nodo verrà disattivato uno alla volta mentre l’altro è ancora disponibile.

Esempio

Esempio Un buon esempio per spiegarlo è quello di parlare della release (ad esempio, la release di produzione M47). Supponiamo che l’istanza SCA abbia due pod (Pod A e Pod B). Pod A e Pod B hanno entrambi il codice M46.

Durante il rilascio, k8s creerà automaticamente un terzo pod (Pod C) con codice M47. Quando Pod C sarà pronto, k8s spegnerà lentamente Pod A e Pod B per evitare tempi morti. Passando lentamente tutto al codice base M47.

Recupero di emergenza

Kubernetes utilizza un archivio di valori chiave coerente e altamente disponibile, chiamato etcd, che funge da archivio di backup per tutti i dati del cluster. In caso di guasto del cluster, possiamo utilizzare le istantanee memorizzate in etcd per ripristinare il cluster e i suoi componenti allo stato attuale.

Esempio

Pensate a etcd come a un disco rigido esterno o a uno storage online come apple cloud o google drive. Possono fungere da backup per le nostre preziose foto scattate durante le vacanze dell’estate scorsa. Se per caso avete cancellato le vostre foto dal telefono, potete sempre recuperarle dal vostro disco rigido esterno o dal cloud storage. Davvero fantastico. Nel caso di Kubernetes, il sistema è dotato di uno storage integrato che conserva di volta in volta lo stato corrente e, nel caso in cui si verifichi qualcosa di negativo, è possibile utilizzare gli stati di cui si è fatto il backup per ripristinare i cluster.

Come appare in Connect?

Ecco un esempio di come si è conclusa una richiesta nel nostro cluster k8s

Nell’esempio qui sopra, quando l’utente (l’utente) preme il pulsante di visita su google chrome a https://app.sca3.wpenginepowered.com , la pagina web di frontend invierà una richiesta (API) al nostro cluster GKE per ottenere le ultime notizie per l’utente corrente (l’utente A nel diagramma).

La richiesta arriverà prima al nostro server web Ingress (reverse proxy), che effettuerà il bilanciamento del carico e assegnerà la richiesta a uno dei pod attivi presenti nel cluster.

Nell’esempio mostrato sopra, solo il pod #2 e il pod #3 sono attualmente liberi e il pod #3 viene scelto per servire la richiesta. Tutti i meccanismi avvengono automaticamente nel nostro cluster Kubernetes.

Il pod esegue la nostra implementazione backend, recuperando le informazioni necessarie dal database, riconfezionando il tutto e restituendo i dati al nostro bel frontend.

Ogni istanza di Connect sul nostro cluster di produzione Kubernetes ha almeno due pod per servire le richieste e se uno di essi fallisce o impiega troppo tempo a rispondere, il cluster genera automaticamente nuovi pod e sostituisce quello fallito.

Questo per garantire il 100% di uptime per tutte le istanze.

Siamo l'Accademia Swiss Connect

Non vediamo l’ora di presentarvi i nostri servizi!

Articoli correlati