Subnet pod dell'interfaccia di Azure CNI

La subnet pod di Azure CNI assegna indirizzi IP ai pod da una subnet separata dai nodi del cluster. Questa funzionalità è disponibile in due modalità: allocazione IP dinamica e allocazione statica dei blocchi (anteprima).

Prerequisiti

Nota

Quando si usa l'allocazione statica blocchi di CIDR, non è supportata l'esposizione di un'applicazione come servizio di collegamento privato tramite un servizio di bilanciamento del carico Kubernetes.

  • Esaminare i prerequisiti per la configurazione della rete CNI di Azure di base nel servizio Azure Kubernetes, perché gli stessi prerequisiti si applicano a questo articolo.

  • Esaminare i parametri di distribuzione per configurare la rete CNI di Azure di base nel servizio Azure Kubernetes, come si applicano gli stessi parametri.

  • Il motore del servizio Azure Kubernetes e i cluster DIY non sono supportati.

  • Versione 2.37.0 dell'interfaccia della riga di comando di Azure o successiva e versione 2.0.0b2 o successiva dell'estensione aks-preview.

  • Registrare il flag di funzionalità a livello di sottoscrizione per la sottoscrizione: 'Microsoft.ContainerService/AzureVnetScalePreview'.

  • Se si dispone di un cluster esistente, è necessario abilitare Informazioni dettagliate sui contenitori per il monitoraggio dell'utilizzo della subnet IP. È possibile abilitare Container Insights usando il comando az aks enable-addons, come illustrato nell'esempio seguente:

    az aks enable-addons --addons monitoring --name <cluster-name> --resource-group <resource-group-name>
    

Modalità di allocazione IP dinamica

L'allocazione IP dinamica consente di ridurre i problemi di esaurimento degli indirizzi IP dei pod effettuando l'allocazione di indirizzi IP pod da una subnet separata da quella che ospita il cluster del servizio Azure Kubernetes.

La modalità di allocazione IP dinamica offre i vantaggi seguenti:

  • Migliore utilizzo IP: gli indirizzi IP vengono allocati dinamicamente ai pod del cluster dalla subnet Pod. Ciò comporta un migliore utilizzo degli indirizzi IP nel cluster rispetto alla soluzione CNI tradizionale, che esegue l'allocazione statica degli indirizzi IP per ogni nodo.
  • Scalabile e flessibile: le subnet dei nodi e dei pod possono essere scalate in modo indipendente. Una singola subnet pod può essere condivisa tra più pool di nodi di un cluster o tra più cluster del servizio Azure Kubernetes distribuiti nella stessa rete virtuale. È anche possibile configurare una subnet pod separata per un pool di nodi.
  • Prestazioni elevate: poiché ai pod vengono assegnati indirizzi IP di rete virtuale, hanno connettività diretta ad altri pod e risorse del cluster nella rete virtuale. La soluzione supporta cluster molto grandi senza alcuna riduzione delle prestazioni.
  • Criteri di rete virtuale separati per i pod: poiché i pod hanno una subnet separata, è possibile configurare criteri di rete virtuale separati per essi diversi dai criteri dei nodi. Ciò consente molti scenari utili, ad esempio consentire la connettività Internet solo per i pod e non per i nodi, correggere l'indirizzo IP di origine per il pod in un pool di nodi usando un gateway NAT di Azure e usare gruppi di sicurezza di rete per filtrare il traffico tra pool di nodi.
  • Criteri di rete di Kubernetes: la nuova modalità supporta sia i criteri di rete di Azure che di Calico.

pianificare l'indirizzamento IP

Con l'allocazione IP dinamica, i nodi e i pod si ridimensionano in modo indipendente, in modo da poter pianificare separatamente gli spazi degli indirizzi. Poiché le subnet dei pod possono essere configurate in base alla granularità di un pool di nodi, è sempre possibile aggiungere una nuova subnet quando si aggiunge un pool di nodi. I pod di sistema in un pool di cluster/nodi ricevono anche indirizzi IP dalla subnet del pod, quindi questo comportamento deve essere tenuto in considerazione.

Gli indirizzi IP vengono allocati ai nodi in batch di 16. L'allocazione degli IP della subnet pod deve essere pianificata con un minimo di 16 IP per ogni nodo del cluster, poiché i nodi hanno bisogno di 16 IP all'avvio e richiedono un altro gruppo di 16 ogni volta che ci sono <8 IP non allocati nella loro allocazione.

La pianificazione degli indirizzi IP per i servizi Kubernetes e il bridge Docker rimangono invariati.

Modalità di allocazione statica dei blocchi (anteprima)

L'allocazione statica dei blocchi consente di ridurre le potenziali limitazioni di ridimensionamento delle subnet dei pod e del mapping degli indirizzi di Azure attraverso l'assegnazione di blocchi CIDR ai nodi, anziché ai singoli indirizzi IP.

La modalità di allocazione statica dei blocchi offre i vantaggi seguenti:

  • Migliore scalabilità IP: i blocchi CIDR vengono allocati staticamente ai nodi del cluster e sono presenti per la durata del nodo, a differenza della tradizionale allocazione dinamica dei singoli IP con il CNI tradizionale. Ciò consente il routing basato su blocchi CIDR e permette di aumentare il limite del cluster fino a 1 milione di pod, rispetto ai tradizionali pod da 65.000 per cluster. La rete virtuale di Azure deve essere sufficientemente grande per supportare la scalabilità del cluster.
  • Flessibilità: le subnet nodo e pod possono essere dimensionate in modo indipendente. Una singola subnet pod può essere condivisa tra più pool di nodi di un cluster o tra più cluster del servizio Azure Kubernetes distribuiti nella stessa rete virtuale. È anche possibile configurare una subnet pod separata per un pool di nodi.
  • Prestazioni elevate: poiché ai pod vengono assegnati indirizzi IP di rete virtuale, hanno connettività diretta ad altri pod e risorse del cluster nella rete virtuale.
  • Criteri di rete virtuale separati per i pod: poiché i pod hanno una subnet separata, è possibile configurare criteri di rete virtuale separati per essi diversi dai criteri dei nodi. Ciò consente molti scenari utili, ad esempio consentire la connettività Internet solo per i pod e non per i nodi, correggere l'indirizzo IP di origine per il pod in un pool di nodi usando un gateway NAT di Azure e usare gruppi di sicurezza di rete per filtrare il traffico tra pool di nodi.
  • Criteri di rete Kubernetes: Cilium, NPM di Azure e Calico funzionano con questa soluzione.

Limiti

Di seguito sono riportate alcune delle limitazioni dell'uso dell'allocazione statica dei blocchi di Azure CNI:

  • La versione minima di Kubernetes necessaria è la 1.28
  • Le dimensioni massime supportate della subnet sono x.x.x.x/12 ~ 1 milione di indirizzi IP
  • È possibile utilizzare una sola modalità di funzionamento per subnet. Se una subnet usa la modalità di allocazione statica dei blocchi, non può essere utilizzata la modalità di allocazione IP dinamica in un cluster o un pool di nodi diverso con la stessa subnet e viceversa.
  • Ciò è supportato solo nei nuovi cluster o quando si aggiungono pool di nodi con una subnet diversa ai cluster esistenti. Non si supporta la migrazione o l'aggiornamento di cluster o pool di nodi esistenti.
  • In tutti i blocchi CIDR assegnati a un nodo nel pool di nodi, un IP verrà selezionato come indirizzo IP primario del nodo. Pertanto, per gli amministratori di rete che selezionano il valore --max-pods, provare a usare il calcolo seguente per soddisfare al meglio le esigenze e ottenere un utilizzo ottimale degli indirizzi IP nella subnet:

max_pods = (N * 16) - 1 dove N è qualsiasi numero intero positivo e N> 0

Aree di disponibilità

Questa funzionalità non è disponibile nelle aree seguenti:

  • Stati Uniti meridionali
  • Stati Uniti orientali 2
  • Stati Uniti occidentali
  • West US 2

pianificare l'indirizzamento IP

Con l'allocazione statica dei blocchi, i nodi e i pod si ridimensionano in modo indipendente, in modo da poter pianificare separatamente gli spazi degli indirizzi. Poiché le subnet dei pod possono essere configurate in base alla granularità di un pool di nodi, è sempre possibile aggiungere una nuova subnet quando si aggiunge un pool di nodi. I pod di sistema in un pool di cluster/nodi ricevono anche indirizzi IP dalla subnet del pod, quindi questo comportamento deve essere tenuto in considerazione.

I blocchi CIDR di /28 (16 IP) vengono allocati ai nodi in base alla configurazione --max-pods per il pool di nodi, che definisce il numero massimo di pod per nodo. 1 IP è riservato in ogni nodo da tutti gli indirizzi IP disponibili in tale nodo per scopi interni.

Durante la pianificazione degli indirizzi IP, è importante definire la configurazione --max-pods usando il calcolo seguente: max_pods_per_node = (16 * N) - 1, dove N è un numero intero positivo maggiore di 0.

I valori ideali, senza sprechi di IP, prevedono che il valore massimo dei pod sia conforme all'espressione sopra riportata.

Vedere i casi di esempio seguenti:

Caso di esempio max_pods Blocchi CIDR allocati per nodo IP totali disponibili per i pod Sprechi di IP per il nodo
Spreco basso (accettabile) 30 2 (16 * 2) - 1 = 32 - 1 = 31 31 - 30 = 1
Caso ideale 31 2 (16 * 2) - 1 = 32 - 1 = 31 31 - 31 = 0
Spreco elevato (non consigliato) 32 3 (16 * 3) - 1 = 48 - 1 = 47 47 - 32 = 15

La pianificazione degli indirizzi IP per i servizi Kubernetes rimane invariata.

Nota

Verificare che la rete virtuale disponga di uno spazio indirizzi sufficientemente grande e contiguo per supportare la scalabilità del cluster.