Usare l'integrazione rete virtuale del server API nel servizio Azure Kubernetes (AKS)

Si applica a: ✔️ Servizio Azure Kubernetes Standard automatico ✔️ Servizio Azure Kubernetes standard

Un cluster Servizio Azure Kubernetes (AKS) configurato con API Server VNet Integration proietta l'endpoint del server API direttamente in una subnet delegata nella rete virtuale in cui viene distribuito il servizio Azure Kubernetes. L'Integrazione della rete virtuale del server API consente la comunicazione di rete tra il server API e i nodi del cluster senza richiedere un collegamento privato o un tunnel. Il server API è disponibile dietro un indirizzo VIP del servizio di bilanciamento del carico interno nella subnet delegata, che i nodi sono configurati a utilizzare. Usando un’Integrazione della rete virtuale del server API è possibile garantire che il traffico di rete tra il server API e i pool di nodi rimanga solo sulla rete privata.

Per la maggior parte dei carichi di lavoro di produzione, AKS Automatic è l'esperienza AKS predefinita consigliata. AKS Automatic è idoneo all'uso in produzione per impostazione predefinita e include l'integrazione della rete virtuale (VNet) del server API come funzionalità di sicurezza del cluster preconfigurata. In AKS Standard l'integrazione rete virtuale del server API è facoltativa e la si abilita durante la creazione del cluster o aggiornando un cluster esistente.

Per altre informazioni sul servizio Azure Kubernetes automatico, vedere Che cos'è Servizio Azure Kubernetes (AKS) automatico?

Integrazione rete virtuale del server API nel servizio Azure Kubernetes automatico e nel servizio Azure Kubernetes standard

L'integrazione VNet del server API è disponibile in entrambe le modalità del cluster AKS, ma la configurazione varia:

  • AKS Automatic: l'integrazione del server API con la rete virtuale è preconfigurata.
  • AKS Standard: l'integrazione VNet del server API è facoltativa e deve essere abilitata esplicitamente.

Per la maggior parte degli scenari di produzione, inizia con AKS Automatic per usare configurazioni predefinite pronte per la produzione e ridurre il sovraccarico operativo.

Connettività del server API

Il piano di controllo o il server API si trova in una sottoscrizione Azure gestita da AKS. Il cluster o il pool di nodi si trova nella tua sottoscrizione di Azure. Il server e le macchine virtuali che costituiscono i nodi del cluster possono comunicare tra loro tramite l'indirizzo VIP del server API e gli indirizzi IP pod proiettati nella subnet delegata.

L'Integrazione della rete virtuale del server API è supportata per i cluster pubblici e privati. È possibile aggiungere o rimuovere l'accesso pubblico dopo il provisioning del cluster. A differenza dei cluster non integrati nella rete virtuale, i nodi agente comunicano sempre direttamente con l'indirizzo IP privato dell'IP del servizio di bilanciamento del carico interno del server API senza usare DNS. Tutto il traffico da nodo a server API viene mantenuto nella rete privata e non è necessario alcun tunnel per la connettività del server API al nodo. I client out-of-cluster che devono comunicare con il server API possono farlo normalmente se l'accesso alla rete pubblica è abilitato. Se l'accesso alla rete pubblica è disabilitato, è necessario seguire la stessa metodologia di configurazione DNS privata dei cluster privati standard.

Prerequisiti

  • È necessario aver installato interfaccia della riga di comando di Azure versione 2.73.0 o successiva. È possibile controllare la versione usando il az --version comando .
  • Se usi una rete virtuale personalizzata, consulta i prerequisiti della rete virtuale.

Limitazioni

Le seguenti limitazioni si applicano all'integrazione del server API con la VNet, sia che sia preconfigurata in AKS Automatic sia che sia abilitata esplicitamente in AKS Standard:

  • L'integrazione VNet del server API non supporta la crittografia della rete virtuale. I cluster distribuiti su SKU di nodo AKS v3 o precedenti (che non supportano la Crittografia VNet) sono consentiti, ma il traffico non è crittografato. I cluster distribuiti in v4 o versioni successive di SKU del nodo del servizio Azure Kubernetes (che supportano la crittografia della rete virtuale) vengono bloccati perché le reti virtuali crittografate non sono compatibili con l'integrazione della rete virtuale del server dell'API. Per ulteriori informazioni, vedi SKU di VM supportate da AKS.
  • Per usare la rete dual-stack, il cluster richiede Kubernetes versione 1.26.3 o successiva, il plug-in di rete azure e la modalità overlay del plug-in di rete. Per ulteriori informazioni, vedere cluster CNI di Azure con rete a doppio stack.

Availability

  • L'integrazione VNet del server API è disponibile in tutte le regioni del cloud pubblico GA, ad eccezione di QatarCentral.

Creare un cluster con integrazione rete virtuale del server API

In AKS Automatic, l'integrazione della rete virtuale (VNet) del server API è preconfigurata. Non è necessario alcun flag esplicito --enable-apiserver-vnet-integration.

Creare un cluster del servizio Azure Kubernetes automatico seguendo l'avvio rapido:

AKS Standard: rete virtuale gestita

È possibile configurare i cluster Standard di AKS con l'integrazione della rete virtuale del server API in modalità VNet gestita come cluster pubblici o privati.

Note

L'integrazione rete virtuale del server API non è disponibile in qatarcentral.

Creare un gruppo di risorse

Creare un gruppo di risorse usando il comando az group create.

az group create --location <location> --name <resource-group>

Distribuire un cluster pubblico

Distribuire un cluster nel servizio Azure Kubernetes standard pubblico con l'integrazione rete virtuale del server API per una rete virtuale gestita usando il comando az aks create con il flag --enable-apiserver-vnet-integration.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-apiserver-vnet-integration \
    --generate-ssh-keys

Distribuire un cluster privato

Distribuisci un cluster AKS Standard privato con l'integrazione della rete virtuale del server API per una rete virtuale gestita usando il comando az aks create con i flag --enable-apiserver-vnet-integration e --enable-private-cluster.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --generate-ssh-keys

AKS Standard: rete virtuale personalizzata

Quando si usa una rete virtuale bring-your-own, è necessario creare e delegare una subnet del server API a Microsoft.ContainerService/managedClusters. Questa delega concede al servizio AKS le autorizzazioni per iniettare i pod del server API e il bilanciatore del carico interno in tale subnet. Non è possibile usare la subnet per altri carichi di lavoro, ma è possibile usarla per più cluster del servizio Azure Kubernetes che si trovano nella stessa rete virtuale. La dimensione minima supportata della subnet del server API è /28.

L'identità del cluster richiede autorizzazioni sia per la subnet del server API che per la subnet del nodo. La mancanza di autorizzazioni nella subnet del server API può causare un errore di provisioning.

Avviso

Un cluster AKS riserva almeno nove indirizzi IP nello spazio di indirizzamento della subnet. L'esaurimento degli indirizzi IP può impedire il ridimensionamento del server API e causare un'interruzione del server API.

Note

L'integrazione rete virtuale del server API non è disponibile in qatarcentral.

Creare un gruppo di risorse

Creare un gruppo di risorse usando il comando az group create.

az group create --location <location> --name <resource-group>

Crea rete virtuale

  1. Creare una rete virtuale usando il comando az network vnet create.

    az network vnet create --name <vnet-name> \
    --resource-group <resource-group> \
    --location <location> \
    --address-prefixes 172.19.0.0/16
    
  2. Creare una subnet del server API usando il comando az network vnet subnet create.

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <apiserver-subnet-name> \
    --delegations Microsoft.ContainerService/managedClusters \
    --address-prefixes 172.19.0.0/28
    
  3. Creare una subnet del cluster usando il comando az network vnet subnet create.

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <cluster-subnet-name> \
    --address-prefixes 172.19.1.0/24
    

Creare un'identità gestita e concedere le autorizzazioni per la rete virtuale

  1. Creare un'identità gestita usando il comando az identity create.

    az identity create --resource-group <resource-group> --name <managed-identity-name> --location <location>
    
  2. Assegnare il ruolo Collaboratore di rete alla subnet del server API usando il comando az role assignment create.

    az role assignment create --scope <apiserver-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    
  3. Assegnare il ruolo Collaboratore di rete alla subnet del cluster usando il comando az role assignment create.

    az role assignment create --scope <cluster-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    

Distribuire un cluster pubblico

Distribuire un cluster del servizio Azure Kubernetes pubblico con l'Integrazione della rete virtuale del server API usando il comando az aks create con il flag --enable-apiserver-vnet-integration.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys

Distribuire un cluster privato

Distribuire un cluster del servizio Azure Kubernetes privato con l'Integrazione della rete virtuale del server API usando il comando az aks create con i flag --enable-apiserver-vnet-integration e --enable-private-cluster.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys

Convertire un cluster AKS Standard esistente all'integrazione della rete virtuale del server API

Avviso

L'integrazione della rete virtuale del server API è una funzionalità unidirezionale e sensibile alla capacità. Quando si abilita l'integrazione rete virtuale del server API in un cluster standard del servizio Azure Kubernetes esistente, si applicano le limitazioni seguenti:

  • Riavvio manuale obbligatorio: dopo aver abilitato l'integrazione rete virtuale del server API usando az aks update --enable-apiserver-vnet-integration, a causa della transizione delle risorse del piano di controllo, è necessario riavviare immediatamente il cluster per rendere effettiva la modifica. Questo riavvio non è automatizzato. Il ritardo del riavvio aumenta il rischio di mancata disponibilità della capacità, che può impedire l'avvio del server API. Il riavvio del cluster garantisce anche che tutti i nodi si riconnettano in modo affidabile al nuovo endpoint server API.
  • La capacità viene convalidata, ma non riservata: il servizio Azure Kubernetes convalida la capacità a livello di area quando si abilita la funzionalità in un cluster esistente, ma questa convalida non riserva capacità. Se si ritarda il riavvio e la capacità non è più disponibile nel frattempo, il cluster potrebbe non essere avviato dopo un arresto o un riavvio. I cluster che hanno abilitato questa funzionalità prima della disponibilità generale (GA) o che non sono ancora stati riavviati dopo l'abilitazione, non subiscono la convalida della capacità.
  • Non è possibile disabilitare la funzionalità: una volta abilitata, la funzionalità è permanente. Non è possibile disabilitare l'integrazione rete virtuale del server API.

Questo aggiornamento esegue un aggiornamento della versione dell'immagine del nodo in tutti i pool di nodi e riavvia tutti i carichi di lavoro durante l'aggiornamento di un'immagine in sequenza.

Avviso

La conversione di un cluster in Integrazione della rete virtuale del server API comporta una modifica dell'indirizzo IP del server API, anche se il nome host rimane invariato. Se si configura l'indirizzo IP del server API in qualsiasi firewall o regole del gruppo di sicurezza di rete, potrebbe essere necessario aggiornare tali regole.

  1. Aggiornare il cluster all'Integrazione della rete virtuale del server API usando il comando az aks update con il flag --enable-apiserver-vnet-integration.

    az aks update --name <cluster-name> \
        --resource-group <resource-group> \
        --enable-apiserver-vnet-integration \
        --apiserver-subnet-id <apiserver-subnet-resource-id>
    
  2. Riavviare il cluster usando i comandi [az aks stop][az-aks-stop] e [az aks start][az-aks-start].

    az aks stop --name <cluster-name> --resource-group <resource-group>
    az aks start --name <cluster-name> --resource-group <resource-group>
    

Abilitare o disabilitare la modalità cluster privato in un cluster esistente con Integrazione della rete virtuale del server API

I cluster del servizio Azure Kubernetes configurati con Integrazione della rete virtuale del server API possono avere la modalità di accesso alla rete pubblica/cluster privato abilitata o disabilitata senza ridistribuire il cluster. Il nome host del server API non cambia, ma le voci DNS pubbliche vengono modificate o rimosse, se necessario.

Note

--disable-private-cluster è attualmente in anteprima. Per altre informazioni, vedere Livelli di riferimento e di supporto.

Abilitare la modalità cluster privato

Abilitare la modalità cluster privato usando il comando az aks update con il flag --enable-private-cluster.

az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --apiserver-subnet-id <apiserver-subnet-resource-id>

Disabilitare la modalità cluster privato

Disabilitare la modalità cluster privato usando il comando az aks update con il flag --disable-private-cluster.

az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --disable-private-cluster

Connettersi al cluster usando kubectl

Configurare kubectl per connettersi al cluster usando il comando az aks get-credentials.

az aks get-credentials --resource-group <resource-group> --name <cluster-name>

È possibile esporre l'endpoint server API di un cluster privato con Integrazione rete virtuale del server API usando collegamento privato di Azure. I passaggi seguenti illustrano come creare un servizio collegamento privato (PLS) nella rete virtuale del cluster e connetterlo da un'altra rete virtuale o sottoscrizione usando un endpoint privato.

Note

L'integrazione rete virtuale del server API non è disponibile in qatarcentral.

Creare un cluster privato per l'integrazione VNet del server API

Crea un cluster AKS privato con Integrazione VNet del server API utilizzando il comando az aks create con i flag --enable-apiserver-vnet-integration e --enable-private-cluster.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration

Per altre indicazioni su come configurare collegamento privato con Integrazione rete virtuale del server API, vedere collegamento privato con Integrazione rete virtuale del server API.

Regole di sicurezza del gruppo di sicurezza di rete (NSG)

Tutto il traffico all'interno della rete virtuale è consentito per impostazione predefinita. Tuttavia, se sono state aggiunte regole del gruppo di sicurezza di rete per limitare il traffico tra subnet diverse, assicurarsi che le regole di sicurezza del gruppo di sicurezza di rete consentano i tipi di comunicazione seguenti:

Destination Source (Sorgente) Protocollo Porto Uso
CIDR subnet APIServer Subnet del cluster TCP 443 e 4443 Obbligatorio per abilitare la comunicazione tra i nodi e il server API.
CIDR subnet APIServer Azure Load Balancer TCP 9988 Obbligatorio per abilitare la comunicazione tra Azure Load Balancer e il server API. È anche possibile abilitare tutte le comunicazioni tra il Azure Load Balancer e il CIDR della subnet del server API.