Kubernetes e iptables: è ora di Muoversi verso eBPF?

Cos’è eBPF?

“eBPF” sta per “extended Berkeley Packet Filter”.

 È una tecnologia che estende il tradizionale Berkeley Packet Filter (BPF) e offre un framework più flessibile e potente per l’analisi dei pacchetti di rete e l’esecuzione di codice personalizzato nel kernel del sistema operativo.

eBPF può essere utilizzato in vari contesti, inclusi il monitoraggio delle prestazioni, la sicurezza di rete e altre operazioni di basso livello. Consente agli sviluppatori di scrivere programmi che vengono eseguiti nel kernel, fornendo una maggiore visibilità e controllo sulle operazioni di rete senza compromettere la sicurezza o l’affidabilità del sistema. Questa tecnologia è stata ampiamente adottata nel mondo Linux per migliorare le capacità di analisi e controllo a livello di kernel.

eBPF è stato ampiamente adottato anche in ambienti Kubernetes, e sempre più strumenti e progetti stanno sfruttando questa tecnologia per migliorare la gestione e le prestazioni dei container in ambienti Kubernetes.

Cilium è un progetto open-source che fa ampio uso di eBPF in ambienti Kubernetes. Cilium è progettato per fornire una rete e una sicurezza avanzate per i container in ambienti orchestrali come Kubernetes. Utilizza eBPF per implementare funzionalità avanzate di rete e sicurezza a livello di kernel.

Al principio

Per i servizi con più pod per alta disponibilità o scalabilità, kube-proxy funge da bilanciatore di carico. Distribuisce il traffico in ingresso tra i pod per garantire carichi di lavoro bilanciati e un’efficiente utilizzazione delle risorse.

Quindi, cos’è iptables? Iptables è stato sviluppato oltre due decenni fa come uno strumento di filtro di pacchetti e firewall all’interno del kernel Linux. Analizza, modifica e filtra i pacchetti di rete su un insieme di regole definite dall’utente basate su indirizzi IP o regole basate su porte (TCP/UDP).

Considera iptables come un insieme di moduli del kernel per filtrare o modificare pacchetti. Questi moduli collegano i loro callback agli hook di netfilter per eseguire un insieme di regole. Nei primi giorni, con esigenze di prestazioni meno rigorose, iptables ha funzionato diligentemente come lo strumento predefinito per la sicurezza di rete e la gestione del traffico con le sue centinaia (o migliaia) di regole che ispezionavano e reindirizzavano i pacchetti.

Le regole di iptables sono organizzate in tabelle iptables e catene iptables. Una catena iptables è l’elenco ordinato di regole che viene valutato sequenzialmente quando un pacchetto attraversa la catena. Una tabella iptables è un modo per raggruppare insieme catene di regole; iptables ha cinque tabelle che coprono Filter, NAT, Mangle, Raw e Security.

Entra in Scena eBPF

La tecnologia descritta da Brendan Gregg come “superpoteri” per il kernel Linux. Per coloro che non ne sono a conoscenza, eBPF è una tecnologia versatile ed efficiente che ha guadagnato rapidamente terreno nelle reti Linux. Consente l’elaborazione programmabile direttamente all’interno del kernel Linux, abilitando una vasta gamma di attività legate alla rete, all’osservabilità e alla sicurezza con una velocità e flessibilità altamente efficienti. La varietà di casi d’uso è stata pienamente evidenziata durante il recente summit eBPF del 2023.

Rusty Russel, il creatore di iptables, ha riconosciuto eBPF come l’aggiornamento tanto atteso per iptables: “Le prestazioni di iptables erano ‘per lo più sufficienti’. Sostituirlo ha richiesto così tanto tempo perché richiede un approccio radicalmente diverso; è bello vedere che finalmente sta accadendo!”.

Per il bilanciamento del carico, iptables non è mai stato progettato per operazioni altamente scalabili come quelle che vediamo oggi con Kubernetes. L’abbinamento sequenziale delle regole e le rigide regole basate su indirizzi IP faticano con indirizzi IP che cambiano frequentemente.

Al contrario, eBPF utilizza efficienti tabelle hash consentendo una scala praticamente illimitata. Nella grafica sottostante, minore è la latenza, migliore è la performance. Approfondendo il benchmark delle prestazioni, iptables fa fatica con la latenza all’aumentare del numero di microservizi, mentre l’efficienza di eBPF con una complessità temporale quasi O(log n) è evidente, mostrando le sue capacità di sostituire kube-proxy e iptables.

Utilizzando tabelle hash, il carico operativo su eBPF rimane in modo affidabile stabile, nonostante l’aumento significativo del numero di servizi all’interno di un cluster.

Il momento è giunto: arrivederci iptables

Nel caso della sostituzione di iptables con una soluzione modernizzata, la risposta è stata quella di andare oltre IPVS e introdurre eBPF nel livello di rete. Per la comunità del kernel Linux, è sempre stato chiaro che eBPF rappresentava un miglioramento rispetto a iptables, e in questo post abbiamo condiviso benchmark che evidenziano le diverse modalità in cui eBPF supera iptables e IPVS.

Attualmente, lo standard del settore per integrare eBPF in Kubernetes (e di conseguenza sostituire kube-proxy) è attraverso Cilium.

 

Cilium rappresenta la completa sostituzione di kube-proxy, e molto altro ancora.

Attualmente, Cilium è l’unico CNI (Container Networking Interface) presso la CNCF (Cloud Native Computing Foundation) che ha ottenuto ufficialmente la laurea!

I principali fornitori di servizi cloud si sono allontanati da kube-proxy e utilizzano Cilium come CNI consigliato, tra cui Azure, AWS e Google Cloud.

Nel corso degli ultimi 5 anni, Cilium si è affermato come la scelta accettata per introdurre eBPF nell’ambiente Kubernetes, con i team che scelgono continuamente Cilium per modernizzare oltre iptables. Cilium è facile da installare e gestire; la guida alla sostituzione di kube-proxy mostra la semplicità di esecuzione come plugin CNI senza kube-proxy, sostituendo iptables con eBPF sullo sfondo.

Questa transizione da iptables a eBPF è un percorso dell’ultimo decennio che segna un cambiamento significativo nel modo in cui gestiamo l’inoltro dei pacchetti, il bilanciamento del carico e l’astrazione del servizio all’interno dei cluster Kubernetes. Iptables, pur essendo una tecnologia affidabile, non è stata progettata per gestire le dinamiche e ampie esigenze di rete delle moderne implementazioni di Kubernetes.

La migrazione da kube-proxy e iptables a eBPF rappresenta un salto significativo in avanti nelle reti di Kubernetes. Non è solo un aggiornamento tecnico, ma uno spostamento strategico che si allinea alle esigenze degli ambienti Kubernetes moderni, dinamici e di grande scala.

Conclusione

Sostituire iptables con eBPF è facile con Cilium, lo standard del settore per le reti di Kubernetes. Cilium offre prestazioni, scalabilità ed efficienza operative migliorate, rendendolo la scelta logica per modernizzare l’infrastruttura di Kubernetes.

Condividi l’articolo!!


Scopri i nostri corsi!

Formazione Cloud-Native in presenza o da remoto
Nabil Sato

Nabil Sato

DevOps Instructor & Engineer
Istruttore e consulente IT per aziende a livello nazionale ed europeo, implementazioni di soluzioni che spaziano dall’ ambito della virtualizzazione a quello delle piattaforme Containers. Esperienza nel disegnare infrastrutture di rete resilienti e altamente disponibili con le moderne teconologie di SDN.

Fra le numerose certificazioni si può delineare un profilo Agile e incline alla metodologia DevOps. Le tecnologie trattate sono composte da soluzioni VMware (DCV, SDN, Cloud), Kubernetes e integrazioni varie.
Tra i punti di forza vi è un coinvolgimento dei clienti nell’ implementazione che permette alle aziende di avere anche un Training on the Job favorito dall’esperienza nella formazione professionale.

Find me on Linkedin!