Kubernetes è una piattaforma di coordinamento dei container open-source per l'automazione, l'implementazione, la scalabilità e la gestione di applicazioni, carichi di lavoro e servizi containerizzati.
I container sono pacchetti software con tutti i file e le dipendenze che servono per la loro esecuzione in qualsiasi ambiente, inclusi codice applicazione, runtime, librerie e molto altro. Virtualizzando il sistema operativo, i container possono essere eseguiti in ambienti di sviluppo, test e produzione o in qualsiasi ambiente di elaborazione, dai dispositivi personali ai cloud pubblici o ai data center privati.
Come funzionano i container?
I container comprendono diversi componenti.
- Le immagini dei container sono pacchetti software completi, statici, leggeri ed eseguibili che contengono tutte le informazioni necessarie per eseguire un container. Esistono diversi formati di immagine dei container, di cui il più comune è l'OCI (Open Container Initiative).
- I motori dei container accedono alle immagini dei container da un archivio e le eseguono. Alcuni dei motori di container più comuni includono Docker, CRI-O, Containerd, runC, LXD e RKT. I motori dei container possono essere eseguiti su qualsiasi host container, inclusi dispositivi personali, server fisici o nel cloud.
- I container sono immagini dei container eseguite dal relativo motore. Il sistema operativo host, in genere Linux, Mac o Microsoft Windows, limita la capacità del container di accedere a risorse come CPU, memoria e storage, impedendo al container di consumare una quantità sproporzionata di risorse fisiche.
- La tecnologia di pianificazione e coordinamento dei container gestisce l'implementazione e l'esecuzione dei container.
Che cos'è la containerizzazione?
La containerizzazione è l'attività di raggruppamento del codice software con il sistema operativo, le librerie, i file di configurazione e altre dipendenze necessarie per eseguire il codice. Offrendo un approccio allo sviluppo del software basato sul concetto di "creare una volta, eseguire ovunque", le applicazioni containerizzate consentono agli sviluppatori di creare e distribuire le applicazioni in modo più rapido e sicuro.
Perché sono necessari i container?
Poiché la trasformazione digitale (link to /glossary/what-is-digital-transformation) ha reso il mondo più interconnesso, le applicazioni sono spesso necessarie per essere eseguite in molti ambienti diversi. In passato, molte applicazioni non venivano eseguite correttamente senza modifiche quando venivano spostate da un ambiente all'altro, in genere a causa delle differenze di configurazione nell'infrastruttura sottostante e nelle dipendenze.
I container risolvono questo problema eseguendo il packaging del software in un'infrastruttura agile che contiene tutto il necessario per l'esecuzione di un'applicazione. In questo modo, i container consentono agli sviluppatori e ai team IT di distribuire i programmi software in ambienti diversi senza dover modificare il codice. Di conseguenza, i team IT possono contare su un comportamento coerente su diversi computer e ambienti. Gli sviluppatori possono apportare modifiche al codice e aggiungere nuove dipendenze ai container senza preoccuparsi se il codice modificato sarà incompatibile con vari ambienti.
Che differenza c'è tra un container e una macchina virtuale?
Le macchine virtuali (VM) sono un altro modello di computing virtualizzato. Le VM utilizzano un hypervisor per virtualizzare l'hardware fisico necessario per eseguire un server e ogni VM contiene un sistema operativo guest insieme ad applicazioni, librerie e dipendenze. Le VM possono consumare una quantità significativa di risorse di sistema, specialmente quando diverse VM, ciascuna con il proprio sistema operativo guest, vengono eseguite sullo stesso server fisico.
Al contrario, la tecnologia dei container è virtualizzata a livello di sistema operativo anziché a livello dell'hardware e più container condividono lo stesso sistema operativo o kernel di sistema dell'host. Di conseguenza, i container utilizzano una piccola parte della memoria richiesta dalle VM poiché condividono il kernel del sistema operativo. Ciò consente anche l'avvio dei container in pochi secondi, mentre le VM possono richiedere diversi minuti.
Per cosa è progettato un container?
I container supportano più casi di utilizzo.
- DevOps. I container consentono ai team addetti allo sviluppo delle applicazioni di adottare un modello di sviluppo cloud-native per sistemi di integrazione/distribuzione continua (CI/CD), DevOps e senza server.
- Microservizi. La natura agile dei container li rende ideali per le architetture di microservizi in cui il software è costituito da più servizi più piccoli, liberamente accoppiati.
- Cloud computing. Poiché i container offrono performance coerenti ovunque, sono ideali per implementazioni multicloud e nel cloud ibrido in cui i carichi di lavoro possono spostarsi tra ambienti di data center pubblici e privati.
- Migrazione nel cloud. I container vengono spesso utilizzati per modernizzare le applicazioni mentre i team IT le preparano per la migrazione nel cloud. I container sono anche un candidato ideale per i servizi che verranno sottoposti a refactoring durante la migrazione.
Quali sono i vantaggi offerti dai container?
I container offrono alle organizzazioni molti vantaggi, tra cui:
- Maggiore efficienza. Poiché condividono con l'host lo stesso kernel del sistema operativo, i container sono più efficienti delle VM.
- Gestione più semplice. I container consentono di implementare, applicare patch e scalare rapidamente le applicazioni.
- Portabilità dei carichi di lavoro . I container consentono ai team IT di distribuire ed eseguire i carichi di lavoro ovunque: su sistemi operativi Linux, Windows o Mac, su VM o server fisici e su singoli dispositivi, in data center on-premise e nel cloud.
- Performance coerenti . I container offrono performance affidabili su più sistemi operativi e piattaforme.
- Riduzione dei costi fissi. Rispetto ai computer e alle VM tradizionali, i container hanno un numero molto inferiore di requisiti di risorse di sistema per la memoria, la CPU e lo storage. Ciò consente di supportare molti più container sulla stessa infrastruttura.
- Utilizzo ottimizzato . Abilitando un'architettura di microservizi, i container semplificano l'implementazione e la scalabilità granulare dei componenti delle applicazioni, evitando la necessità di scalare un'intera applicazione quando un singolo componente non è in grado di gestire un carico di lavoro.
Che cos'è il coordinamento dei container?
Il coordinamento dei container è l'attività che consente di gestire più implementazioni di container in un'organizzazione. Un coordinatore di container è una piattaforma che automatizza il ciclo di vita della gestione dei container, incluse attività come provisioning e implementazione, allocazione delle risorse, mantenimento dei tempi di attività, scalabilità orizzontale o verticale, individuazione dei servizi, rete, storage e sicurezza.
Il coordinamento fornisce visibilità e controllo sulla posizione in cui vengono implementati i container e sulla modalità di allocazione dei carichi di lavoro tra più container. Il coordinamento evita la necessità di gestire i container manualmente e consente ai team IT di applicare le policy in modo selettivo o collettivo a un gruppo di container.
La piattaforma di coordinamento dei container più nota si chiama Kubernetes e può essere implementata su qualsiasi infrastruttura, inclusi i cloud pubblici, le reti on-premise o sull'edge. Red Hat® OpenShift® è una piattaforma Kubernetes aziendale che fornisce operazioni automatizzate complete su qualsiasi infrastruttura insieme ad ambienti self-service per la creazione di container.
Quali sono le minacce alla sicurezza per i container?
Anche se i container consentono ai team IT di distribuire il software ovunque e avviare rapidamente le applicazioni, tuttavia, rappresentano, un'altra fonte di preoccupazione per la sicurezza. Gli sviluppatori e i team IT possono adottare diverse misure per impedire che i container vengano sfruttati dai criminali, tra cui:
- Adozione di best practice per la sicurezza e aggiunta di convalide a livello di applicazione/codice
- Esecuzione di container su un servizio sicuro come Kubernetes
- Aggiunta di restrizioni di rete a livello di cluster per filtrare il traffico non autorizzato
- Scelta di una piattaforma per container sicura e affidabile a livello del cloud
- Scansione delle immagini dei container alla ricerca di malware
- Applicazione di solidi controlli nei registri dei container
- Utilizzo di strumenti di sicurezza tali da risolvere le vulnerabilità che possono diventare attive durante il runtime dei container
Domande frequenti (FAQ)
I container sono apparsi per la prima volta diversi decenni fa, ma sono stati reintrodotti da Docker nel 2013 per soddisfare le esigenze dell'era del computing moderno.
Docker è una piattaforma open-source per la creazione, la distribuzione e la gestione di container su un sistema operativo comune. La piattaforma Docker esegue il packaging, fornisce ed esegue i container, utilizzando l'isolamento delle risorse nel kernel del sistema operativo per eseguire più container sullo stesso sistema operativo.
L'OCI (Open Container Initiative) è una struttura di governance aperta della Linux Foundation, dedicata alla creazione di standard di settore aperti per i formati dei container e i runtime.
Perché i clienti scelgono Akamai
Akamai è l'azienda di cybersecurity e cloud computing che abilita e protegge il business online. Le nostre soluzioni di sicurezza leader del settore, l'innovativa intelligence sulle minacce e il team presente su scala globale forniscono una difesa approfondita in grado di proteggere applicazioni e dati critici ovunque. Le soluzioni complete di cloud computing offerte da Akamai assicurano performance elevate e notevoli risparmi grazie alla piattaforma più distribuita al mondo. Le maggiori aziende internazionali si affidano ad Akamai per ottenere la protezione, la scalabilità e le competenze leader del settore di cui hanno bisogno per far crescere le loro attività senza rischi.