Jump to section

Introduzione ai modelli Kubernetes

Copia URL

Un modello descrive una soluzione ripetibile a un problema. I modelli Kubernetes sono modelli di progettazione per applicazioni e servizi containerizzati.  

Kubernetes offre una raccolta di interfacce di programmazione delle applicazioni (API) e strumenti per la creazione di applicazioni e aiuta gli sviluppatori a scrivere applicazioni cloud native

Non fornisce tuttavia le linee guida su come usare questi strumenti per realizzare un sistema completo in grado di soddisfare le esigenze e gli obiettivi aziendali. 

I modelli servono a riutilizzare le architetture. Anziché creare un'architettura completamente nuova, puoi avvalerti dei modelli Kubernetes esistenti, che forniscono inoltre un'ulteriore garanzia rispetto al corretto funzionamento del sistema. 

Quando si è impegnati a erogare servizi aziendali importanti su una base architetturale Kubernetes, occorre evitare procedure dispendiose in termini di tempo che, a loro volta, possono causare periodi di inattività e interruzioni. 

Un modello ti offre una soluzione applicabile a un'intera serie di problemi analoghi. Non è una semplice procedura da seguire per risolvere un problema specifico.

Non è detto che un modello porti sempre alla stessa soluzione. Utilizzare lo stesso modello potrebbe produrre anche due sistemi diversi, ma accomunati da alcune caratteristiche comuni. 

Usando i modelli Kubernetes, gli sviluppatori possono creare applicazioni cloud native avvalendosi di Kubernetes come piattaforma di runtime.

I modelli, che sono strumenti indispensabili per gli sviluppatori Kubernetes, ti mostrano come creare un sistema.

  • I modelli di base coprono i concetti chiave di Kubernetes. Questi modelli costituiscono i principi e le pratiche fondamentali per la creazione di applicazioni containerizzate cloud native. 
  • I modelli comportamentali si posizionano sopra quelli di base e aggiungono granularità ai concetti per la gestione dei vari tipi di interazione di container e piattaforme. 
  • I modelli strutturali si riferiscono all'organizzazione dei container all'interno di un pod Kubernetes. 
  • I modelli di configurazione vengono usati per le varie tipologie di gestione delle configurazioni di applicazioni in Kubernetes. Questi modelli includono le procedure specifiche per collegare le applicazioni alle loro configurazioni. 
  • I modelli avanzati includono concetti avanzati, come le modalità di estensione della piattaforma stessa o come la creazione di immagini container direttamente nel cluster.

Modelli di prevedibilità delle richieste

I modelli di prevedibilità delle richieste fanno parte dei modelli di base di Kubernetes. Questa tipologia di modello garantisce che le tue applicazioni siano conformi ai principi fondamentali delle applicazioni containerizzate, in modo da essere automatizzate con Kubernetes. 

I modelli di prevedibilità delle richieste spiegano il motivo per cui ogni container deve dichiarare i requisiti delle risorse dell'app e le dipendenze di runtime. Sulla base di questi requisiti, Kubernetes individua esattamente dove eseguire il deployment dell'app all'interno del tuo cluster

Alcuni esempi di cosa sia possibile definire usando questi modelli includono le dipendenze di runtime, i profili delle risorse, la priorità dei pod e le risorse di progetto.

Esempio: profili delle risorse

Innanzitutto, occorre specificare i requisiti delle risorse, come CPU e memoria, di un container sotto forma di richiesta e di limite. Una richiesta si riferisce alla quantità minima di risorse necessaria, mentre un limite si riferisce alla quantità massima di risorse utilizzabile da un container. 

La quantità di richieste viene usata dall'utilità di pianificazione nell'ambito del posizionamento dei pod sui nodi. L'utilità di pianificazione programmerà solo un pod su un nodo che disponga della capacità sufficiente per ospitarlo.  

In caso non fossero stati stabiliti i requisiti delle risorse, il container verrà considerato a bassa priorità e terminato prima qualora il nodo non disponesse delle risorse disponibili.

Modelli di configurazione

Tutte le applicazioni richiedono una configurazione, e sebbene archiviare le configurazioni nel codice sorgente sia una soluzione semplice, non fornisce quella flessibilità necessaria per adattare la configurazione senza ricreare l'immagine dell'app. Una configurazione esterna consente un adattamento in base all'ambiente.

I modelli di configurazione ti aiutano a personalizzare e adattare le tue app con configurazioni esterne per diversi ambienti di sviluppo, integrazione e produzione. 

Esempio: configurazione EnVar

Il modello di configurazione EnVar è ottimale in presenza di piccoli set di variabili di configurazione, in cui è possibile utilizzare variabili ambientali supportate universalmente per esternalizzare la configurazione. 

Esternalizzare la configurazione di un'app consente di apportare modifiche alla configurazione anche in seguito alla creazione dell'app stessa, rispetto a una configurazione hardcoded, che richiederebbe la creazione ex novo dell'app. 

Usare le variabili ambientali per esternalizzare la configurazione è una soluzione ideale poiché tali variabili sono definibili da qualsiasi sistema operativo e accessibili da qualsiasi linguaggio di programmazione. 

Con le variabili ambientali, i valori hardcoded predefiniti vengono definiti generalmente durante la creazione, quindi sovrascritti in fase di runtime.

In Kubernetes, le varianti possono essere impostate direttamente nella specifica del pod di un controller come deployment o set di repliche. Puoi collegare i valori direttamente alle variabili ambientali, a loro volta gestibili separatamente dalla definizione del pod.

Puoi inoltre usare una delega a Kubernetes Secrets (per i dati sensibili) e ConfigMaps (per le configurazioni non sensibili).

Modelli avanzati

Questi modelli includono argomenti complessi e le implementazioni dei modelli più recenti. Alcuni esempi di modelli Kubernetes avanzati includono: controller, operatore, scalabilità elastica e image builder.

Esempio: scalabilità elastica 

Questo modello viene usato per la scalabilità orizzontale di un'applicazione adattando il numero di repliche dei pod e per la scalabilità verticale accomodando i requisiti delle risorse per i pod. Prevede inoltre la scalabilità del cluster stesso, cambiando il numero dei nodi del cluster.

Sebbene sia possibile gestire la scalabilità manualmente, il modello di scalabilità elastica consente la scalabilità automatica di Kubernetes in base al carico. 

Con Kubernetes è possibile modificare le risorse di un container, le repliche desiderate per un servizio o il numero di nodi nel cluster. Inoltre, Kubernetes è in grado di monitorare il carico esterno e gli eventi correlati alla capacità, analizzare lo stato del container e adottare la scalabilità necessaria per la prestazione prescelta. 

La scalabilità automatica orizzontale del pod fa in modo che la capacità di un'app non sia fissa, ma che sia sufficiente per gestire un carico variabile. Per la scalabilità dei pod viene usato un Horizontal Pod Autoscaler (HPA). 

Per poter usufruire dell'HPA, è necessario abilitare il server delle metriche, un aggregatore in tutto il cluster dei dati di utilizzo delle risorse, e definire un limite delle risorse della CPU. È possibile inoltre creare una definizione dell'HPA dalla riga di comando. 

Il controller dell'HPA recupera continuamente le metriche sui pod correlati alla scalabilità, in base alla definizione determinata precedentemente e impostata dalla riga di comando. 

Calcola inoltre il numero di repliche necessarie in base al valore corrente e a quello desiderato e modifica le repliche dichiarate per mantenere il nuovo stato richiesto.

Red Hat® OpenShift® è una piattaforma Kubernetes di livello enterprise, che offre agli sviluppatori ambienti self service per la creazione di app e servizi, nonché processi automatizzati in tutto lo stack su qualsiasi infrastruttura.

Red Hat OpenShift include tutti i componenti aggiuntivi che rendono Kubernetes una soluzione efficiente di livello enterprise, tra cui: registro, reti, telemetria, sicurezza, automazione e servizi.

Con Red Hat OpenShift, gli sviluppatori possono creare nuove app containerizzate, ospitarle e distribuirle nel cloud con la scalabilità, il controllo e l'orchestrazione necessari per commercializzare nuove iniziative, in modo rapido e facile.

Keep reading

ARTICOLO

Stateful e stateless

La condizione di stateful o stateless di un elemento dipende dalla durata della registrazione dell'interazione con l'elemento stesso e dalle modalità di memorizzazione di questa informazione.

ARTICOLO

Cos'è Quarkus?

Quarkus è uno stack Java Kubernetes native realizzato per le macchine virtuali Java (JVM) e per la compilazione nativa, che ottimizza Java specificamente per i container.

ARTICOLO

Cos'è il serverless computing?

Il serverless computing è un modello di sviluppo cloud native che consente agli sviluppatori di creare ed eseguire applicazioni senza gestire i server.

Scopri di più sulle applicazioni cloud native

Prodotti

Una piattaforma applicativa aziendale che offre servizi verificati per consentire la distribuzione delle app sulle infrastrutture preferite.

Risorse

White paper

Panoramica di Red Hat sullo sviluppo cloud native

Ebook

Il percorso verso le applicazioni cloud native

EBOOK

Cloud native e cloud ibrido: come definire la tua strategia.

Formazione

Formazione gratuita

Developing Cloud-Native Applications with Microservices Architectures