Usare un plug-in CNI (Container Network Interface) personalizzato con il servizio Azure Kubernetes (AKS)
Kubernetes non offre un sistema di interfaccia di rete per impostazione predefinita. Questa funzionalità è invece fornita dai plug-in di rete. Il servizio Azure Kubernetes (AKS) offre diversi plug-in CNI supportati. Per informazioni sui plug-in supportati, vedere i concetti di rete del servizio Azure Kubernetes.
I plug-in supportati soddisfano la maggior parte delle esigenze di rete in Kubernetes. Tuttavia, gli utenti avanzati del servizio Azure Kubernetes potrebbero volere lo stesso plug-in CNI usato negli ambienti Kubernetes locali o usare funzionalità avanzate disponibili in altri plug-in CNI.
Questo articolo illustra come distribuire un cluster del servizio Azure Kubernetes senza plug-in CNI preinstallati. Da qui, è possibile installare qualsiasi plug-in CNI di terze parti che funziona in Azure.
Supporto tecnico
Il supporto Microsoft non può fornire assistenza con i problemi correlati a CNI nei cluster distribuiti con BYOCNI (Bring Your Own Container Network Interface). Ad esempio, i problemi correlati a CNI coprono la maggior parte del traffico est/ovest (da pod a pod), insieme a kubectl proxy
e comandi simili. Se si vuole il supporto correlato a CNI, usare un plug-in di rete del servizio Azure Kubernetes supportato o richiedere supporto dal fornitore di terze parti del plug-in BYOCNI.
Il supporto è ancora disponibile per i problemi non correlati a CNI.
Prerequisiti
- Per Azure Resource Manager (ARM) o Bicep, usare almeno la versione del modello 2022-01-02-preview o 2022-06-01.
- Per l'interfaccia della riga di comando di Azure, usare almeno la versione 2.39.0.
- 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
o192.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 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
- La subnet assegnata al pool di nodi del servizio Azure Kubernetes non può essere una subnet delegata.
- Il servizio Azure Kubernetes non applica gruppi di sicurezza di rete (NSG) alla sua subnet e non modifica i NSG associati a tale subnet. Se si specifica subnet e si aggiunge NSG associati a questa subnet, bisogna assicurarsi che le regole di sicurezza negli NSG consentano il traffico all'interno dell'intervallo CIDR del nodo. Per altre informazioni, vedere Gruppi di sicurezza di rete.
Creare un cluster del servizio Azure Kubernetes senza plug-in CNI preinstallato
Creare un gruppo di risorse di Azure per il cluster del servizio Azure Kubernetes usando il comando
az group create
.az group create --location eastus --name myResourceGroup
Creare un cluster del servizio Azure Kubernetes usando il comando
az aks create
. Passare il parametro--network-plugin
con il valore dinone
.az aks create \ --location eastus \ --resource-group myResourceGroup \ --name myAKSCluster \ --network-plugin none \ --generate-ssh-keys
Distribuire un plug-in CNI
Al termine del provisioning del servizio Azure Kubernetes, il cluster è online, ma tutti i nodi si trovano in uno stato NotReady
, come illustrato nell'esempio seguente:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-23902496-vmss000000 NotReady agent 6m9s v1.21.9
$ kubectl get node -o custom-columns='NAME:.metadata.name,STATUS:.status.conditions[?(@.type=="Ready")].message'
NAME STATUS
aks-nodepool1-23902496-vmss000000 container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
A questo punto, il cluster è pronto per l'installazione di un plug-in CNI.
Passaggi successivi
Per altre informazioni sulla rete in servizio Azure Kubernetes, vedere gli articoli seguenti:
Azure Kubernetes Service