Implementare un'architettura Kubernetes

Cos'è Kubernetes?

Kubernetes (o K8s) è uno degli orchestratori più conosciuti e permette la gestione di container applicativi open source. Questo tipo di architettura garantisce grande stabilità ad applicazioni e software, facilitandone la resilienza e la scalabilità. È possibile implementarli, aggiornarli e utilizzarli in modo semplificato e automatizzato. OVHcloud offre Service Managed Kubernetes, soluzione basata sulle istanze Public Cloud per implementare le architetture applicative. È anche possibile connetterla a un Cloud privato, ibrido o creare un multicloud. Questo sistema è stato sviluppato dagli ingegneri di Google ed è stato annunciato nel 2015 alla Cloud Native Computing Foundation (CNCF), in collaborazione con la Fondazione Linux.

Kubernetes

Vantaggi di Kubernetes

Kubernetes offre numerosi vantaggi che rendono questa piattaforma un leader del settore, apprezzato da aziende di tutto il mondo.

La piattaforma è stata pensata per amministrare un'ampia gamma di applicazioni che richiedono carichi di lavoro eterogenei. Per gestire il ciclo di vita di applicazioni e software containerizzati, la piattaforma attribuisce le risorse del server in base alle esigenze dei diversi container. In questo modo, si favorisce la scalabilità delle applicazioni senza comprometterne il funzionamento e si garantisce la loro prevedibilità e disponibilità elevata.

Per ottenere queste prestazioni, il container non virtualizza tutta la soluzione come farebbe una macchina virtuale (VM): vengono virtualizzati solo OS, RAM e file system. I container consumano quindi meno risorse CPU e memoria.

Le architetture Kubernetes garantiscono prestazioni elevate ai software per container e costi sotto controllo. Permettono anche la portabilità delle applicazioni verso Cloud privati o pubblici.

La sicurezza è fondamentale: ciascun container può disporre di misure specifiche per contrastare le minacce di attacco.

OVHcloud mette a disposizione un team di esperti per offrire un'interfaccia semplice e performante, che permette di distribuire rapidamente le applicazioni sul Cloud.

Quali sono i componenti di un'architettura Kubernetes?

L'architettura Kubernetes è composta da diversi elementi che permettono di utilizzare, implementare e aggiornare i software per container.
Il componente principale di Kubernetes è il cluster che raggruppa i server virtuali o fisici, che svolgono il ruolo di master o di nodo.

Componente “master” di Kubernetes

La funzione principale del master è di organizzare la creazione o l’eliminazione di nodi e container. Inoltre, si occupa della ripartizione del traffico in base alle esigenze. È a partire da questo server master che gli amministratori impostano e interagiscono con l’infrastruttura.

Sono utilizzati diversi elementi:

Etcd

L'etcd è il database chiave-valore utilizzato dal cluster. Si tratta di un archivio unico di dati per tutti i container, che contiene informazioni persistenti. Se utilizzato come memoria per l'intero cluster, è necessario un piano di backup per i dati etcd.

Kube-apiserver

Il kube-apiserver è il punto di contatto principale con gli elementi del cluster. Il server API convalida e configura i dati che vengono utilizzati in seguito nei nodi, nei servizi o nei controller di replica.

Kube-controller-manager

Il kube-controller-manager si basa sul server API per controllare lo stato del server. Questo servizio implementa un nodo e lo amministra per tutta la sua esistenza ed è garante dell'integrità e della disponibilità dell'architettura.

Kube-scheduler

Kube-scheduler è il servizio che permette a Kubernetes di offrire prestazioni elevate: si tratta infatti del componente responsabile della ripartizione dei compiti tra i nodi, in base al carico e alle risorse disponibili.

Cloud-controller-manager

Il cloud-controller-manager è un livello di astrazione tra le API, gli strumenti del provider Cloud e il loro equivalente su Kubernetes e permette la portabilità completa della piattaforma.

I nodi Kubernetes

I nodi sono i server figli che costituiscono il cluster. Come il master, diversi componenti svolgono le funzioni di gestione di nodi, pod e container.

Pod

Il pod è il componente base di un nodo Kubernetes, che contiene uno o più container che si dividono le risorse. Ogni pod è accessibile tramite un indirizzo IP unico nel cluster. Questi container contengono le applicazioni. Gli ambienti di esecuzione più utilizzati sono Docker e Helm chart.
Un pod può disporre di spazi di storage messi a disposizione dei diversi container che ospita. Ogni pod possiede anche un'etichetta che gli permette di essere identificato nell'architettura.

Kubelet

Kubelet è un agente eseguito su ogni nodo dell'architettura Kubernetes. Il suo compito è controllare lo stato desiderato del nodo e assicurarsi che funzioni correttamente, secondo le istruzioni ricevute dal server master. Kubelet comunica al master i dati relativi a prestazioni e carico dei nodi, per consentire al Kube-scheduler di ripartire in modo efficace i task.

kube-proxy

Il kube-proxy è un proxy di rete che, eseguito sui nodi, permette di gestire gli indirizzi IP virtuali dei pod, accessibili sia all'interno che all'esterno del cluster. È anche utilizzato per equilibrare il carico dei servizi eseguiti su un nodo.

Questi componenti permettono a Kubernetes di offrire un sistema di orchestrazione di cluster efficace e performante, ampiamente utilizzato dalla Community.

Installare Kubernetes con OVHcloud

OVHcloud si occupa dell’implementazione, hosting e manutenzione di tutti i componenti dell’architettura Kubernetes. I nostri esperti intervengono a livello di componenti master, ma anche su quelli installati sui nodi dell’utente, per prevenire i bug e garantire la sicurezza dell’architettura. Inoltre è inclusa la nostra protezione Anti-DDoS.

Il nostro obiettivo: permettere all’utente di concentrarsi sullo sviluppo e l’utilizzo delle applicazioni e livelli di software per container.

L’OVHcloud Load Balancer è un servizio che contribuisce alle performance dell'architettura Kubernetes e consente una ripartizione efficace del traffico su diversi nodi. È possibile impostare la scalabilità automatica dei pod in base allo stato di utilizzo delle applicazioni. Se necessario, è possibile assegnare quote sulle prestazioni CPU e RAM dei nodi. Le risorse di calcolo del cluster possono essere adattate in modo dinamico.

Infine, grazie al programma di conformità CNCF, OVHcloud garantisce la totale reversibilità dei dati.

Implementare container tramite un'architettura Kubernetes offre vantaggi in termini di performance, scalabilità e high availability.

Kubernetes managed

Implementare un'architettura Kubernetes

Quando viene creata un'architettura Kubernetes, il cluster viene dimensionato sulla base delle proprie esigenze. Per ogni cluster è possibile definire il numero di pod e il volume delle istanze di container (repliche). Una volta terminata questa operazione, puoi implementare la soluzione in tre step grazie con OVHcloud.

  • 1. Crea un cluster Kubernetes
    Crea il tuo progetto passo per passo nel Public Cloud seguendo la nostra guida.
     
  • 2. Aggiungi nodi basati sulle istanze
    Questi nodi vengono creati nel cluster e contengono i tuoi pod. I pod possono ospitare uno o più container che lavorano insieme.
     
  • 3. Accedi a Kubernetes e inizia a implementare container
    Quando Kubernetes viene consegnato, i nodi di lavoro sono disponibili in pochi minuti. Tramite l'interfaccia Kubernetes Dashboard puoi implementare il livello software e gli applicativi nei container. L’architettura proposta da OVHcloud ti permette di focalizzarti sulla gestione di pod, container e dati persistenti. Al resto pensiamo noi!

    I volumi persistenti si basano su dischi aggiuntivi standard o high performance che garantiscono l'accesso a dati e applicazioni.

    Kubernetes offre l’isolamento rapido degli ambienti di sviluppo, preproduzione e produzione. Per effettuare questa operazione, è sufficiente trasferire il file di configurazione da un cluster all'altro e descrivere lo stato previsto.

    Bisogno di aiuto per implementare l’infrastruttura? La documentazione tecnica relativa a Kubernetes è a tua disposizione.

In conclusione

Oggi la disponibilità elevata è un elemento imprescindibile. Gli utenti si aspettano quindi che le applicazioni siano sempre raggiungibili. La progettazione di software e applicazioni basati su container limita le interruzioni di servizio e permette di migliorare le performance e la scalabilità.

La soluzione è supportata da una Community che segue l'evoluzione costante di componenti e servizi. Le nuove versioni sono proposte in OVHcloud nel trimestre successivo all'implementazione.

Le infrastrutture e i servizi di OVHcloud possiedono le certificazioni ISO/IEC 27001, 27701 e HDS per ospitare in sicurezza dati e applicazioni.

Kubernetes permette di implementare architetture software per container, indipendentemente dalla loro dimensione e complessità, basandosi sulla potenza e stabilità dei servizi Cloud di OVHcloud.