Cos'è la rete Kubernetes?

Un uomo che fa escursioni da solo nelle Alpi Allgaeu

Autori

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Cos'è la rete Kubernetes?

Il networking Kubernetes fornisce l'infrastruttura di rete per consentire la comunicazione, la scalabilità, la sicurezza e l'accesso esterno per le applicazioni basate su container.

La rete è complessa e coinvolge la comunicazione tra tutti i componenti principali presenti all'interno, come pod, nodi, container e servizi, e all'esterno, come il traffico esterno di un cluster Kubernetes.

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

1.Networking container-to-container.

2. Networking pod-to-pod.

3. Networking pod-to-service.

4.Networking external-to-service.

Veduta aerea di uno snodo di autostrade

Rimani con la testa nel cloud 


Ricevi la newsletter settimanale Think per una guida esperta sull'ottimizzazione delle impostazioni multicloud nell'era dell'AI.

Cos'è Kubernetes?

Il nome Kubernetes deriva dal greco e significa timoniere o pilota. Basato su Borg, la piattaforma interna di orchestrazione dei container di Google, Kubernetes è stato introdotto al pubblico come strumento open source nel 2014.

Nello stesso anno, Google ha donato Kubernetes alla Cloud Native Computing Foundation, l'hub open source e indipendente dal fornitore di cloud-native computing. 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, ovvero le unità software standard che racchiudono il codice e tutte le sue dipendenze. Questo strumento di orchestrazione è molto apprezzato per l'esecuzione rapida e affidabile in qualsiasi ambiente infrastrutturale, sia esso on-premise, cloud privato, cloud pubblico o hybrid cloud.

A differenza delle 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 per 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).

NS1 Connect

IBM NS1 Connect

Aumenta la resilienza della tua rete con IBM NS1 Connect. In questo video, discuteremo del valore di IBM NS1 Connect per la resilienza e le prestazioni delle applicazioni

.

Architettura di Kubernetes

I seguenti componenti fondamentali compongono 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 della scalabilità delle applicazioni.

Gestendo tutte le risorse di calcolo, rete e storage in un cluster Kubernetes, il nodo master aiuta a garantire che applicazioni e servizi containerizzati siano distribuiti in modo equo ai nodi worker del 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 implementazione dei 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.

Altri componenti di Kubernetes includono:

Distribuzione: la distribuzione in Kubernetes gestisce un set di pod per eseguire un workload dell'applicazione. Una distribuzione identifica il numero di repliche di un pod da eseguire nel cluster. Se un pod non funziona, la distribuzione ne crea 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 di riga di comando specifico per Kubernetes.

Servizio: un servizio Kubernetes è uno strato 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 di application programming interface (API): il server API in Kubernetes espone l'API di Kubernetes API (l'interfaccia utilizzata per gestire, creare e configurare 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 Wi-Fi.

Nelle reti fisiche, i server fisici sono collegati a attrezzature di rete fisiche come switch, router e cavi Ethernet per connettersi a Internet.

Nelle reti virtuali, 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 addentrarsi più a fondo nel networking di Kubernetes, vale la pena rivedere i termini di base del networking:

Host di rete
: un host di rete è qualsiasi computer connesso a una rete che fornisce informazioni, applicazioni o servizi ad altri host o nodi della rete.

Indirizzo di protocollo Internet (IP):
un indirizzo IP è un numero unico assegnato a ogni dispositivo connesso a una rete che utilizza l'IP per comunicare. 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, puntando direttamente al computer o dispositivo utilizzato.

Porta:
una porta identifica una connessione specifica tra dispositivi di rete. Ogni porta è identificata da un numero. I computer utilizzano i numeri di porta per determinare quale applicazione, servizio o processo debba ricevere particolari messaggi.

Network address translation (NAT):
NAT trasforma indirizzi interni o privati in indirizzi IP pubblici o globalmente indirizzabili, consentendo un accesso sicuro a Internet. NAT consente a un unico indirizzo IP di rappresentare un intero gruppo di dispositivi di calcolo.

Agenti nodo:
gli agenti nodo sono agenti amministrativi che monitorano i server di applicazioni su un sistema host e indirizzano le richieste amministrative ad altri server.

Namespace di rete:
un namespace di rete è una raccolta di interfacce di rete e istruzioni di tabella di routing che fornisce isolamento tra dispositivi di rete.

Proxy o server 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 basate su container in un ambiente distribuito. Il runtime del container su ciascun nodo implementa il modello di rete e aderisce alle seguenti regole:

Ogni pod ha il proprio indirizzo IP, che può essere indirizzato 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, come il kubelet, l'agente del nodo primario che viene eseguito su ogni nodo, possono comunicare con tutti i pod in quel nodo specifico.

Il modello di rete Kubernetes si applica a 4 tipi di base di comunicazioni Kubernetes:

1.Networking container-to-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 storage, indirizzo IP e spazio di porta.

2.Networking pod-to-pod

La comunicazione pod-to-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 esistono.

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.Networking pod-to-service

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.Networking external-to-service

Il networking external-to-service si riferisce all'esposizione e all'accesso ai servizi, come servizi esterni o database, dall'esterno del cluster Kubernetes.

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

ClusterIP: 
mentre ClusterIP è il servizio Kubernetes predefinito per le comunicazioni interne, il traffico esterno può accedervi tramite il 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. Il NodePort è il modo più basilare per eseguire il networking external-to-service ed è spesso utilizzato per scopi di test, come il test per l'accesso pubblico a un'app.

LoadBalancer:
il LoadBalancer, ovvero lo standard per il networking external-service, espone il servizio esternamente utilizzando il provider di cloud di un fornitore cloud e assegna al servizio un indirizzo pubblico. Il traffico dal load balancer esterno viene quindi indirizzato ai pod 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, come i servizi di messaggistica non ospitati all'interno del cluster.

Ingress:
l'ingress Kubernetes è una raccolta di regole di indirizzamento che circondano l'accesso esterno ai servizi all'interno del cluster. Il controller in entrata è un load balancer 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 la Kubernetes Network Policies API e sono costituite dai seguenti componenti di base:

Selettore pod:
il selettore pod specifica a quali pod si applica la policy in base a etichette e selettori.

Ingress:
Ingress definisce regole per il traffico in entrata verso i pod

Egress:
Egress definisce 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 e impedendo così l'accesso non autorizzato e 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 è critico per le situazioni di multitenancy, 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. Questo aiuta a rispettare gli standard normativi e a garantire che il cluster rispetti le policy dell'organizzazione.

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

La Container Network Interface (CNI) è un'altra funzionalità essenziale legata alla rete Kubernetes. Creata e gestita dalla Cloud Native Computing Foundation e utilizzata 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 una CNI predefinita, numerosi plug-in CNI di terze parti, tra cui Calico, Flannel e Weave, 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 capacità esistenti con gli strumenti dell'ecosistema Kubernetes e Kubernetes, prova uno di questi tutorial.

Soluzioni correlate
IBM Cloud Pak for Network Automation 

IBM Cloud Pak for Network Automation è un Cloud Pak che supporta l'automazione e l'orchestrazione delle operazioni dell'infrastruttura di rete.

Esplora Cloud Pak Automation
Soluzioni di rete

Le soluzioni di cloud networking di IBM offrono una connettività ad alte prestazioni per potenziare le tue app e il tuo business.

Esplora le soluzioni di cloud networking
Servizi di supporto di rete

Consolida il supporto dei data center con gli IBM Technology Lifecycle Services per il cloud networking e molto altro.

Servizi di cloud networking
Fai il passo successivo

Rafforza il tuo business con soluzioni all'avanguardia per la gestione DNS e il cloud networking. Migliora l'affidabilità delle applicazioni e ottimizza le prestazioni della rete con i servizi leader di IBM.

Esplora le soluzioni di cloud networking Scopri i DNS Services gestiti