Panoramica della rete Azure CNI nel servizio Azure Kubernetes

Per impostazione predefinita, i cluster del servizio Azure Kubernetes usano kubenet e creano una rete virtuale e una subnet. Con kubenet i nodi ottengono un indirizzo IP da una subnet della rete virtuale. Il protocollo NAT (Network Address Translation) viene quindi configurato nei nodi e i pod ricevono un indirizzo IP "nascosto" dietro l'indirizzo IP del nodo. Questo approccio riduce il numero di indirizzi IP che è necessario riservare ai pod nello spazio degli indirizzi della rete.

Con Azure Container Networking Interface (CNI) ogni pod ottiene un indirizzo IP dalla subnet in modo che vi si possa accedere direttamente. I sistemi nella stessa rete virtuale del cluster del servizio Azure Kubernetes vedono l'indirizzo IP del pod come indirizzo di origine per qualsiasi traffico proveniente dal pod. I sistemi esterni alla rete virtuale del cluster del servizio Azure Kubernetes vedono l'indirizzo IP del nodo come indirizzo di origine per qualsiasi traffico proveniente dal pod. Questi indirizzi IP devono essere univoci nello spazio di indirizzi della rete e devono essere pianificati in anticipo. Ogni nodo ha un parametro di configurazione per il numero massimo di pod che supporta. Il numero equivalente di indirizzi IP per nodo viene quindi riservato anticipatamente per tale nodo. Questo approccio richiede una maggiore pianificazione e spesso conduce all'esaurimento degli indirizzi IP o alla necessità di riconfigurare i cluster in una subnet di dimensioni maggiori man mano che aumentano le richieste dell'applicazione.

Nota

Questo articolo introduce solo Azure CNI tradizionale. Per Sovrimpressione di Azure CNI, Rete virtuale di Azure CNI per l'allocazione di IP dinamici e Rete virtuale di Azure CNI - Allocazione del blocco statico (Anteprima). Fare invece riferimento alla documentazione.

Prerequisiti

  • La rete virtuale per il cluster servizio Azure Kubernetes deve consentire la connettività Internet in uscita.

  • I cluster del servizio Azure Kubernetes non possono usare 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 o 192.0.2.0/24 per l'intervallo di indirizzi del servizio Kubernetes, per l'intervallo di indirizzi del pod o per l'intervallo di indirizzi della rete virtuale del cluster.

  • L'identità usata dal cluster del servizio Azure Kubernetes deve avere almeno le autorizzazioni di Collaboratore di rete per la subnet all'interno della rete virtuale. Se si vuole definire un ruolo personalizzato invece di usare il ruolo predefinito Collaboratore di rete, sono necessarie le autorizzazioni seguenti:

    • Microsoft.Network/virtualNetworks/subnets/join/action

    • Microsoft.Network/virtualNetworks/subnets/read

    • Microsoft.Authorization/roleAssignments/write

  • La subnet assegnata al pool di nodi del servizio Azure Kubernetes non può essere una subnet delegata.

  • Il servizio Azure Kubernetes non applica i gruppi di sicurezza di rete (NSG) alla relativa subnet e non modifica alcun gruppo di sicurezza di rete associato a tale subnet. Se si specifica la propria subnet e si aggiungono i gruppi di sicurezza di rete associati a tale subnet, è necessario assicurarsi che le regole di sicurezza nei gruppi di sicurezza di rete consentano il traffico all'interno dell'intervallo CIDR del nodo. Per altre informazioni, vedere Gruppi di sicurezza di rete.

Parametri di distribuzione

Quando si crea un cluster servizio Azure Kubernetes, per la rete Azure CNI i parametri seguenti sono configurabili:

Rete virtuale: rete virtuale in cui si vuole distribuire il cluster Kubernetes. Per creare una nuova rete virtuale per il cluster, selezionare Crea nuova e seguire i passaggi della sezione Creare una rete virtuale. Se si vuole selezionare una rete virtuale esistente, assicurarsi che si trovi nella stessa posizione e nella stessa sottoscrizione di Azure del cluster Kubernetes. Per altre informazioni su limiti e quote per una rete virtuale di Azure, vedere Sottoscrizione di Azure e limiti, quote e vincoli dei servizi.

Subnet: subnet nella rete virtuale in cui si vuole distribuire il cluster. Per creare una nuova subnet nella rete virtuale per il cluster, selezionare Crea nuova e seguire i passaggi della sezione Creare una subnet. Per la connettività ibrida, l'intervallo di indirizzi non deve sovrapporsi ad altre reti virtuali dell'ambiente in uso.

Plug-in di rete di Azure: quando si usa il plug-in di rete di Azure, non è possibile accedere al servizio LoadBalancer interno con "externalTrafficPolicy=Local" dalle macchine virtuali con un indirizzo IP in clusterCIDR che non appartiene al cluster del servizio Azure Kubernetes.

Intervallo di indirizzi del servizio Kubernetes: questo parametro è il set di indirizzi IP virtuali che Kubernetes assegna ai servizi interni nel cluster. Questo intervallo non può essere aggiornato dopo la creazione del cluster. È possibile usare qualsiasi intervallo di indirizzi privati che soddisfi i requisiti seguenti:

  • Non deve essere compreso nell'intervallo di indirizzi IP della rete virtuale del cluster
  • Non deve sovrapporsi ad altre reti virtuali con cui la rete virtuale del cluster effettua il peering
  • Non deve sovrapporsi ad altri IP locali
  • Non deve essere compreso negli intervalli 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 o 192.0.2.0/24

Sebbene sia tecnicamente possibile specificare un intervallo di indirizzi del servizio all'interno della stessa rete virtuale del cluster, tale operazione non è consigliata. Se vengono usati intervalli IP che si sovrappongono, si può verificare un comportamento imprevedibile. Per altre informazioni, vedere la sezione Domande frequenti di questo articolo. Per altre informazioni sui servizi Kubernetes, vedere Services (Servizi) nella documentazione di Kubernetes.

Kubernetes DNS service IP address (Indirizzo IP del servizio DNS Kubernetes): indirizzo IP per il servizio DNS del cluster. Questo indirizzo deve essere compreso nell'intervallo degli indirizzi del servizio Kubernetes. Non usare il primo indirizzo IP nell'intervallo di indirizzi. Il primo indirizzo nell'intervallo della subnet è usato per l'indirizzo kubernetes.default.svc.cluster.local.

Domande frequenti

  • È possibile distribuire le VM nella subnet del cluster?

    Sì. Ma per Azure CNI per l'allocazione di IP dinamici, le macchine virtuali non possono essere distribuite nella subnet del pod.

  • Quali indirizzi IP di origine vedono i sistemi esterni per il traffico originato in un pod abilitato per Azure CNI?

    I sistemi nella stessa rete virtuale del cluster del servizio Azure Kubernetes vedono l'indirizzo IP del pod come indirizzo di origine per qualsiasi traffico proveniente dal pod. I sistemi esterni alla rete virtuale del cluster del servizio Azure Kubernetes vedono l'indirizzo IP del nodo come indirizzo di origine per qualsiasi traffico proveniente dal pod.

    Ma per Azure CNI per l'allocazione di IP dinamici, non importa che la connessione sia all'interno della stessa rete virtuale o su più reti virtuali, l'IP del pod è sempre l'indirizzo di origine di qualsiasi traffico dal pod. Questo avviene perché Azure CNI per l'allocazione di IP dinamici implementa l'infrastruttura di Microsoft Azure Container Networking, che fornisce l'esperienza end-to-end. Pertanto, elimina l'uso di ip-masq-agent, che viene ancora usato da Azure CNI tradizionale.

  • È possibile configurare criteri di rete per pod?

    Sì, i criteri di rete Kubernetes sono disponibili nel servizio Azure Kubernetes. Per iniziare, vedere Proteggere il traffico tra i pod usando criteri di rete nel servizio Azure Kubernetes.

  • Il numero massimo di pod distribuibili in un nodo è configurabile?

    Sì, quando si distribuisce un cluster con l'interfaccia della riga di comando di Azure o un modello di Gestione risorse. Consultare Numero massimo di pod per nodo.

    Non è possibile modificare il numero massimo di pod per ogni nodo in un cluster esistente.

  • Come si configurano altre proprietà per la subnet creata durante la creazione del cluster servizio Azure Kubernetes? Ad esempio, gli endpoint di servizio.

    L'elenco completo delle proprietà per la rete virtuale e le subnet create durante la creazione del cluster servizio Azure Kubernetes può essere configurato nella pagina di configurazione della rete virtuale standard nel portale di Azure.

  • È possibile usare una subnet diversa all'interno della rete virtuale del cluster per l'intervallo di indirizzi del servizio Kubernetes?

    Non è consigliabile, ma questa configurazione è possibile. L'intervallo di indirizzi del servizio è un set di indirizzi IP virtuali che Kubernetes assegna ai servizi interni nel cluster. La rete di Azure non ha visibilità sull'intervallo di indirizzi IP dei servizi del cluster Kubernetes. La mancanza di visibilità nell'intervallo di indirizzi del servizio del cluster può causare problemi. È possibile creare successivamente una nuova subnet nella rete virtuale del cluster che si sovrappone all'intervallo di indirizzi del servizio. Se si verifica una sovrapposizione di questo tipo, Kubernetes può assegnare a un servizio un indirizzo IP già usato da un'altra risorsa nella subnet, causando un comportamento imprevedibile o errori. Assicurandosi di usare un intervallo di indirizzi esterno alla rete virtuale del cluster, è possibile evitare il rischio di sovrapposizioni.

Passaggio successivo

Per altre informazioni sulla rete in servizio Azure Kubernetes, vedere gli articoli seguenti: