Se hai lavorato con Kubernetes (K8s) e hai provato a imparare alcuni dei suoi meccanismi interni, sul lavoro o in un corso di formazione, devi aver imparato qualcosa su Container Network Interface (CNI). Questo articolo demistifica cosa significa e cosa fa CNI.
Cos'è CNI?
Un plug-in CNI è responsabile dell'inserimento di un'interfaccia di rete nello spazio dei nomi della rete del contenitore (ad esempio, un'estremità di una coppia ethernet virtuale (veth)) e di apportare le modifiche necessarie sull'host (ad esempio, collegando l'altra estremità del veth a un bridge ). Quindi assegna un indirizzo IP all'interfaccia e imposta i percorsi coerenti con la sezione Gestione degli indirizzi IP richiamando il plug-in di gestione degli indirizzi IP (IPAM) appropriato.
[ Potrebbe piacerti anche: Una guida per l'amministratore di sistema ai componenti di base di Kubernetes ]
Dove si inserisce CNI?
CNI viene utilizzato dai runtime dei container, come Kubernetes (come mostrato di seguito), nonché Podman, CRI-O, Mesos e altri.
Il contenitore/pod inizialmente non ha un'interfaccia di rete. Il runtime del contenitore chiama il plug-in CNI con verbi come ADD , CANC , CONTROLLA , ecc. ADD crea una nuova interfaccia di rete per il container e i dettagli di ciò che deve essere aggiunto vengono passati a CNI tramite il payload JSON.
In cosa consiste il progetto CNI?
- Specifiche CNI - Documenta qual è il formato di configurazione quando chiami il plug-in CNI, cosa dovrebbe fare con tali informazioni e il risultato che il plug-in dovrebbe restituire.
- Set di plug-in di riferimento e di esempio:possono aiutarti a capire come scrivere un nuovo plug-in o come potrebbero funzionare i plug-in esistenti. Sono indipendenti dal cloud. Questi sono plugin con funzionalità limitate e solo per riferimento.
Le specifiche CNI
- Specifiche indipendenti dal fornitore
- Utilizzato da Mesos, CloudFoundry, Podman, CRI-O
- Definisce il flusso di esecuzione di base e il formato di configurazione
- Cerca di mantenere le cose semplici e compatibili con le versioni precedenti
Flusso di esecuzione dei plugin CNI
- Quando il runtime del container prevede di eseguire operazioni di rete su un container, (come il kubelet nel caso di K8s) chiama il plug-in CNI con il comando desiderato.
- Il runtime del contenitore fornisce anche la configurazione di rete correlata e i dati specifici del contenitore al plug-in.
- Il plug-in CNI esegue le operazioni richieste e riporta il risultato.
CNI viene chiamato due volte da K8s (kubelet) per impostare loopback e eth0 interfacce per un pod.
Nota :i plugin CNI sono eseguibili e supportano i comandi ADD, DEL, CHECK, VERSION, come discusso sopra.
Perché ci sono più plugin?
CNI fornisce le specifiche per vari plugin. E come sapete, il networking è un argomento complesso con una varietà di esigenze degli utenti. Quindi, ci sono più plugin CNI che fanno le cose in modo diverso per soddisfare vari casi d'uso.
[ Impara le basi dell'uso di Kubernetes in questo cheat sheet gratuito. ]
Concludi
Esistono molti aspetti dell'orchestrazione e della gestione dei container con Kubernetes. Hai appena imparato qualcosa sull'utilizzo di CNI per il networking all'interno di Kubernetes. Per ulteriori informazioni, consulta la pagina del progetto CNI su GitHub.