Home topics Rete Kubernetes Cos'è la rete Kubernetes?
Esplora IBM Cloud Kubernetes Service
Forme diverse collegate in rete tra loro

Pubblicato: 21 novembre 2023
Collaboratori: Stephanie susnjara, Ian smalley

Cos'è la rete Kubernetes?

Kubernetes Network fornisce l'infrastruttura di rete per consentire la comunicazione, la scalabilità, la sicurezza e l'accesso esterno per le applicazioni containerizzate. La rete è complessa e coinvolge la comunicazione tra tutti i componenti principali che risiedono all'interno (ad es. pod, nodi, container, servizi) e all'esterno (ad es. traffico esterno) di un cluster Kubernetes.

Questi componenti si basano su quattro diversi metodi di rete per comunicare:

1. Rete da container a container

2. Rete "pod-to-pod"

3. Collegamento in rete tra pod e servizi

4. Rete esterna al servizio

Automatizzazione dell'elasticità dei container basata sulle applicazioni

Per gli ingegneri di piattaforma e DevOps che cercano di rendere operativa la velocità di immissione sul mercato garantendo al contempo le prestazioni delle applicazioni.

Contenuti correlati

Iscriviti alla newsletter IBM

Cos'è Kubernetes?

Il nome Kubernetes deriva dal greco, che significa timoniere o pilota. Sulla base di Borg, la piattaforma interna di orchestrazione dei container di Google, Kubernetes è stata introdotta al pubblico come strumento open source nel 2014. Nello stesso anno, Google ha donato Kubernetes alla Cloud Native Computing Foundation (link esterno a ibm.com), l'hub di computing cloud-native, open source e indipendente dal fornitore. Da allora, Kubernetes è diventato lo strumento di orchestrazione dei container più utilizzato per eseguire workload basati su container in tutto il mondo.

Kubernetes, noto anche come "k8s" o "kube", è stato esplicitamente progettato per automatizzare la gestione dei container , l'unità software standard che racchiude il codice e tutte le sue dipendenze. Lo strumento di orchestrazione è molto apprezzato per l'esecuzione rapida e affidabile in qualsiasi ambiente infrastrutturale, sia esso on-premise, cloud privato, cloud pubblico o cloud ibrido.

A differenza di macchine virtuali (VM) che virtualizzano l'hardware fisico, i container virtualizzano il sistema operativo (come Linux o Windows). Ogni container contiene solo le librerie e le dipendenze dell'applicazione. Poiché i container condividono lo stesso kernel del sistema operativo dell'host, sono considerati leggeri, veloci e portatili.

Kubernetes e il suo ecosistema di servizi, supporto e strumenti sono diventati la base per la moderna infrastruttura cloud e la modernizzazione delle applicazioni. Tutti i principali provider di cloud, tra cui Amazon Web Services (AWS), Google, Microsoft, IBM e Red Hat, integrano Kubernetes all'interno delle loro piattaforme cloud per migliorare le funzionalità Platform-as-a-Service (PaaS) e Infrastructure-as-a-Service (IaaS).

Architettura di Kubernetes

I seguenti componenti fondamentali comprendono l'architettura Kubernetes: 

Cluster

Un cluster Kubernetes è un insieme di macchine fisiche o virtuali (nodi) che funzionano insieme per eseguire applicazioni containerizzate. I cluster costituiscono la base dell'architettura Kubernetes.

Nodi principali

I nodi master rappresentano un singolo host di elaborazione, una macchina virtuale o fisica. Ospitano i componenti del piano di controllo Kubernetes e sono responsabili della pianificazione e dello scaling delle applicazioni. Gestendo tutte le risorse di calcolo, rete e storage in un cluster Kubernetes, il nodo master assicura che le applicazioni e i servizi containerizzati siano ugualmente implementati sui nodi dei lavoratori nel cluster.

Nodi lavoratori

I nodi del lavoratore sono responsabili dell'esecuzione dei container e dell'esecuzione di qualsiasi lavoro assegnato dal nodo principale. Ospitano anche container di applicazioni, raggruppati come pod.

Pod

I pod sono gruppi di uno o più container (come Linux o Docker) che condividono le stesse risorse di calcolo e la stessa rete. Si tratta di unità di distribuzione cluster che funzionano anche come unità di scalabilità. Ad esempio, se un container in un pod ha un volume di traffico elevato, Kubernetes può replicare tale pod ad altri nodi nel cluster. Kubernetes può anche chiudere i pod se il volume di traffico diminuisce.

I componenti aggiuntivi di Kubernetes includono quanto segue:

  • Implementazione: La distribuzione in Kubernetes gestisce un set di pod per eseguire un carico di lavoro dell'applicazione. Una distribuzione identifica il numero di repliche di un pod da eseguire nel cluster. Se un pod non riesce, la distribuzione ne creerà uno nuovo. Questa funzionalità fondamentale aiuta a scalare il numero di pod di replica, aggiornare i codici e mantenere la disponibilità. Le distribuzioni vengono eseguite utilizzando kubectl, lo strumento della riga di comando specifico per Kubernetes. 
  • Servizio: un servizio Kubernetes è un layer di astrazione che definisce un insieme logico di pod e come accedervi. Un servizio espone un'applicazione di rete in esecuzione su uno o più pod in un cluster. Fornisce un modo astratto per bilanciare il carico dei pod. 
  • Server API: il server API in Kubernetes espone l'API di Kubernetes (l'interfaccia utilizzata per gestire, creare e configurare i cluster Kubernetes) e funge da punto di ingresso per tutti i comandi e le query.
Termini e concetti di networking

La rete di computer di base prevede il collegamento di due o più dispositivi informatici per condividere dati e scambiare risorse, tramite cavi (cablati) o WiFi.

Nella rete fisica, i server fisici sono connessi a apparecchiature di rete fisiche: switch, router e cavi Ethernet per connettersi a Internet. 

Nelle reti virtuali, le reti definite dal software (SDN), componenti come i dispositivi Ethernet virtuali e le interfacce virtuali vengono installati su server bare metal o macchine virtuali per connettersi a Internet. La distribuzione di Kubernetes si basa sull'SDN per configurare e gestire la comunicazione di rete tra i cluster.

Prima di approfondire il networking Kubernetes, vale la pena rivedere i termini fondamentali sull'argomento:

  • Host di rete: un host di rete è qualsiasi computer connesso a una rete che fornisce informazioni, applicazioni o servizi ad altri host o nodi sulla rete.
  • Indirizzo IP (Internet Protocol): un indirizzo IP è un numero univoco assegnato a ogni dispositivo connesso a una rete che utilizza il protocollo Internet per la comunicazione. Identifica la rete host del dispositivo e la posizione del dispositivo sulla rete host.
  • Localhost: Localhost è un nome host predefinito che funge da indirizzo IP privato, che punta direttamente al computer o al dispositivo utilizzato.
  • Porta: Una porta identifica una connessione specifica tra i dispositivi di rete. Ogni porta è identificata da un numero. I computer utilizzano i numeri di porta per determinare quali applicazioni, servizi o processi possono ricevere messaggi specifici.
  • NAT (network address translation): NAT modifica gli indirizzi IP interni o privati in indirizzi IP pubblici o instradabili a livello globale, consentendo un accesso sicuro a Internet. NAT consente a un unico indirizzo IP di rappresentare un intero gruppo di dispositivi informatici.
  • Agenti nodi: gli agenti nodi sono agenti amministrativi che monitorano i server delle applicazioni su un sistema host e inoltrano le richieste amministrative ai server.
  • Spazio dei nomi di rete: uno spazio dei nomi di rete è una raccolta di interfacce di rete e istruzioni sulla tabella di routing che fornisce isolamento tra i dispositivi di rete.
  • Server proxy/proxy: un proxy fornisce un gateway tra gli utenti e Internet. 
Come funziona la rete Kubernetes?

Kubernetes è stato creato per eseguire sistemi ripartiti con un piano di rete distribuito su un cluster di computer. Oltre a fornire interconnettività tra i componenti, la rete cluster Kubernetes crea un ambiente in cui i dati possono spostarsi liberamente ed in modo efficiente attraverso la rete definita dal software.

Un'altra caratteristica distintiva della rete Kubernetes è la sua struttura di rete piatta, il che significa che tutti i componenti possono connettersi senza dipendere da un altro hardware. In Kubernetes, ogni pod in un cluster può comunicare con ogni altro pod, indipendentemente dal nodo su cui è in esecuzione. La rete piatta offre un modo efficiente per condividere le risorse ed eliminare la necessità di un'allocazione dinamica delle porte.

Nel complesso, la rete Kubernetes astrae la complessità, consentendo agli sviluppatori e agli operatori di concentrarsi sulla creazione e sulla manutenzione delle applicazioni piuttosto che sulla gestione di complesse configurazioni di rete.

Modello di rete Kubernetes

Kubernetes fornisce un modello di rete che aiuta a risolvere le sfide dell'orchestrazione di applicazioni containerizzate in un ambiente distribuito. Il runtime del container su ciascun nodo implementa il modello di rete e aderisce alle seguenti regole:

  • Ciascun pod ha un proprio indirizzo IP, che può essere instradato all'interno del cluster. Questa funzione elimina la necessità di creare collegamenti tra pod e porte di mappatura.
  • Poiché ogni pod ha il proprio indirizzo IP, NAT non è necessario. Tutti i pod possono comunicare con tutti gli altri pod del cluster senza NAT.
  • Gli agenti in un nodo (ad esempio il kubelet, l'agente del nodo primario in esecuzione in ogni nodo) possono comunicare con tutti i pod in quel nodo specifico. 

Il modello di rete Kubernetes si applica a quattro tipi di base di comunicazione Kubernetes:

1. Rete da container a container

I container sono l'unità più piccola di una rete Kubernetes. Nelle configurazioni di rete di base, i container comunicano all'interno di un singolo pod tramite localhost. Questa comunicazione è possibile perché i container nello stesso pod condividono lo stesso spazio dei nomi di rete, che include risorse di rete come archiviazione, indirizzo IP e spazio di porta.

2. Rete "pod-to-pod"

La comunicazione da pod a pod include la comunicazione tra pod sullo stesso nodo e la comunicazione tra pod su nodi diversi. Ogni pod in un cluster Kubernetes ha il proprio indirizzo IP univoco, consentendo la comunicazione diretta tra i pod indipendentemente dal nodo in cui risiedono. Inoltre, ogni cluster Kubernetes fornisce automaticamente un servizio DNS (domain name system service) oltre all'indirizzo IP del pod. Il servizio DNS in cui i nomi vengono assegnati a pod (e servizi) crea nomi facili e leggibili per gli amministratori, fornendo un meccanismo leggero per la ricerca del servizio.

3. Collegamento in rete tra pod e servizi

Un servizio in Kubernetes è un'astrazione che definisce un insieme logico di pod e consente l'esposizione al traffico esterno, il bilanciamento del carico e il rilevamento del servizio a tali pod. I servizi facilitano la comunicazione sia dal pod al servizio che dall'esterno al servizio .

Secondo il modello di rete di Kubernetes, gli indirizzi IP del pod sono effimeri. Pertanto, se un pod si arresta o viene eliminato e viene creato un nuovo pod al suo posto, il nuovo pod riceverà probabilmente un nuovo indirizzo IP.

Nella comunicazione da pod a servizio, un ClusterIP è un tipo di servizio che fornisce un indirizzo IP virtuale stabile a un set di pod. Questo indirizzo IP interno è raggiungibile solo all'interno del cluster e può essere utilizzato per le comunicazioni interne tra pod e servizi.

Il kube-proxy, installato su ogni nodo in un cluster, mantiene le regole di rete sull'host e monitora le modifiche dei servizi e dei pod. Man mano che i pod vengono creati o distrutti, il kube-proxy aggiorna gli iptable (un programma di utilità utilizzato per creare regole sul firewall del kernel Linux per instradare il traffico) in modo da riflettere tale modifica in modo che il traffico inviato all'IP del servizio sia instradato correttamente.

4. Rete esterna al servizio

Il networking da esterno a servizio si riferisce all'esposizione e all'accesso a servizi, come servizi esterni o database, dall'esterno del cluster Kubernetes. 

Kubernetes fornisce diversi servizi per agevolare il traffico esterno in un cluster:

  • ClusterIP: mentre ClusterIP è il servizio Kubernetes predefinito per le comunicazioni interne, il traffico esterno può accedervi tramite il proxy kube-proxy. ClusterIP può essere utile quando si accede a un servizio su un laptop o si esegue il debug di un servizio.
  • NodePort: NodePort espone il servizio su una porta statica sull'IP di ciascun nodo, rendendo il servizio accessibile all'esterno del cluster. NodePort è il modo più semplice per eseguire reti esterne al servizio e viene spesso utilizzato a scopo di test, ad esempio per testare l'accesso pubblico a un'app.
  • LoadBalancer: lo standard per la rete di servizi esterni. Il LoadBalancer espone il servizio all'esterno utilizzando il load balancer di un provider cloud e assegna al servizio un indirizzo IP pubblico. Il traffico proveniente dal bilanciamento del carico esterno viene quindi indirizzato ai pod di backend.
  • ExternalName: un name service esterno consente l'accesso a un servizio esterno tramite nome DNS senza esporlo nel cluster DNS. Questo tipo di servizio aiuta a fornire un nome DNS stabile per servizi esterni, ad esempio servizi di messaggistica non ospitati all'interno del cluster. 
  • In entrata: l'ingresso di Kubernetes è una raccolta di regole di routing che circondano l'accesso esterno ai servizi all'interno del cluster. Il controller in entrata è un bilanciatore di carico che funge da ponte di rete tra i servizi Kubernetes e i servizi esterni. 
Politiche di rete di Kubernetes

Le policy di rete Kubernetes sono un costrutto di applicazione che svolge un ruolo fondamentale nella rete Kubernetes. Questi criteri consentono agli amministratori e agli sviluppatori di definire regole che specificano il modo in cui i pod possono comunicare tra loro e con altri endpoint di rete. Le policy di rete vengono applicate utilizzando l'API Kubernetes Network Policies e sono costituite dai seguenti componenti di base: 

  • Selettore di pod: Il selettore di pod specifica a quali pod si applica il criterio in base alle etichette e ai selettori.
  • Ingress: Definisce le regole per il traffico in entrata verso i pod
  • Egress: Definisce le regole per il traffico in uscita dai pod.

Le policy di rete di Kubernetes aiutano a definire e gestire le policy di sicurezza definendo regole che controllano quali pod possono comunicare tra loro, impedendo così l'accesso non autorizzato e impedendo gli attacchi nocivi. Le policy di rete garantiscono inoltre l'isolamento tra pod e servizi in modo che solo tali pod o servizi possano comunicare con un insieme consentito di peer. Ad esempio, l'isolamento è fondamentale per le situazioni di multi-tenancy quando DevOps o altri team condividono lo stesso cluster Kubernetes, ma lavorano su progetti diversi.

Per le aziende con requisiti di conformità specifici, le policy di rete aiutano a specificare e applicare i controlli di accesso alla rete. Ciò aiuta a soddisfare gli standard normativi e garantisce che il cluster aderisca alle politiche dell'organizzazione.

Container Network Interface (CNI) e plug-in di rete

L'interfaccia di rete container (CNI) è un'altra funzionalità essenziale legata alla rete Kubernetes. Creato e gestito dalla Cloud Native Computing Foundation e utilizzato da Kubernetes e altri runtime per container, tra cui RedHat OpenShift® e Apache Mesos, CNI è una specifica standardizzata e un insieme di API che definiscono come i plug-in di rete devono abilitare la rete dei container. I plug-in CNI possono assegnare indirizzi IP, creare spazi dei nomi di rete, configurare percorsi di rete e così via per abilitare la comunicazione pod-to-pod, sia all'interno dello stesso nodo che tra nodi.

Mentre Kubernetes fornisce un CNI predefinito, numerosi plug-in CNI di terze parti, tra cui Calico, Flannel e Weav—sono progettati per gestire la configurazione e la sicurezza negli ambienti di rete basati su container. Pur avendo caratteristiche e approcci diversi al networking, come le reti overlay o il routing diretto, tutti aderiscono alle specifiche CNI compatibili con Kubernetes. 

Tutorial Kubernetes

Se desideri iniziare a lavorare con Kubernetes o incrementare le competenze esistenti con gli strumenti dell'ecosistema Kubernetes e Kubernetes, prova uno di questi tutorial.

Tutorial Kubernetes: laboratori pratici con certificazione

Training interattivo per implementare e rendere operativo un cluster su IBM Cloud Kubernetes Service. Nessun download o configurazione richiesti.

8 trucchi e suggerimenti per Kubernetes Tutorial di Kubernetes su IBM Developer Implementa un'app di microservizi su IBM Cloud utilizzando Kubernetes
Soluzioni correlate
IBM Cloud Kubernetes Service

Implementa cluster sicuri e ad elevata disponibilità in un'esperienza Kubernetes nativa.

Esplora IBM Cloud Kubernetes Service

Red Hat OpenShift on IBM Cloud

Con Red Hat OpenShift on IBM Cloud, gli sviluppatori OpenShift hanno a disposizione un modo rapido e sicuro per containerizzare e implementare i carichi di lavoro aziendali nei cluster Kubernetes.

Scopri Red Hat OpenShift su IBM Cloud

IBM® Cloud Code Engine

IBM Cloud Code Engine, piattaforma serverless completamente gestita, ti consente di eseguire il container, il codice dell'applicazione o il job batch su un runtime del container completamente gestito.

Esplora IBM cloud code engine
risorse Formazione IBM Cloud per sviluppatori

Acquisisci competenze su Kubernetes attraverso i corsi della certificazione IBM Cloud Professional Developer.

Lo spettacolo deve continuare

Gli studenti presentano la loro grafica con Red Hat OpenShift on IBM Cloud.

Containers in the enterprise

I container fanno parte di una strategia di cloud ibrido che ti consente di creare e gestire i carichi di lavoro ovunque ti trovi.

Cos'è Kubernetes?

Kubernetes è una piattaforma di orchestrazione dei container per pianificare e automatizzare la distribuzione, la gestione e la scalabilità delle applicazioni containerizzate.

Cosa sono i contenitori?

I container sono unità eseguibili di software in cui il codice dell'applicazione è impacchettato insieme alle sue librerie e dipendenze, in modi comuni, in modo che il codice possa essere eseguito ovunque.

Cos'è l'orchestrazione di contenitori?

L'orchestrazione di container automatizza e semplifica il provisioning, l'implementazione e la gestione delle applicazioni containerizzate.

Fasi successive

Dai un'occhiata al servizio IBM Cloud Kubernetes e ottieni un cluster gratuitamente. Devi solo creare un account IBM Cloud gratuito e puoi ottenere un cluster da provare per 30 giorni. Vuoi saperne di più sulle opzioni di prezzo? Configura, dai un prezzo e un preventivo al tuo cluster Kubernetes.

Ottieni un cluster gratuito Esamina le opzioni di determinazione dei prezzi