Condividi tramite


Creare un cluster del servizio Azure Kubernetes con Integrazione della rete virtuale del server API (anteprima)

Un cluster del servizio Azure Kubernetes configurato con Integrazione della rete virtuale del server API proietta l'endpoint del server API direttamente in una subnet delegata nella rete virtuale in cui è 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.

Connettività del server API

Il piano di controllo o il server API si trova in una sottoscrizione di Azure gestita dal servizio Azure Kubernetes. Il cluster o il pool di nodi si trova nella 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.

Aree di disponibilità

L’Integrazione della rete virtuale del server API è disponibile in tutte le aree di Azure globali.

Prerequisiti

  • Interfaccia della riga di comando di Azure con estensione aks-preview 0.5.97 o versione successiva.
  • Se si usa ARM o l'API REST, la versione dell'API del servizio Azure Kubernetes deve essere 2022-04-02-preview o successiva.

Installare l'estensione aks-preview per l'interfaccia della riga di comando di Azure

Importante

Le funzionalità di anteprima del servizio Azure Kubernetes sono disponibili in modalità self-service e opzionale. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

  • Installare l'estensione aks-preview usando il comando az extension add.

    az extension add --name aks-preview
    
  • Eseguire l'aggiornamento alla versione più recente dell'estensione rilasciata usando il comando az extension update.

    az extension update --name aks-preview
    

Registrare il flag di funzionalità 'EnableAPIServerVnetIntegrationPreview'

  1. Registrare il flag di funzionalità EnableAPIServerVnetIntegrationPreview usando il comando az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
    

    Sono necessari alcuni minuti per visualizzare lo stato Registered.

  2. Verificare lo stato della registrazione usando il comando az feature show:

    az feature show --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
    
  3. Quando lo stato diventa Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando az provider register.

    az provider register --namespace Microsoft.ContainerService
    

Creare un cluster del servizio Azure Kubernetes con Integrazione della rete virtuale del server API usando la rete virtuale gestita

È possibile configurare i cluster del servizio Azure Kubernetes con Integrazione della rete virtuale del server API in una rete virtuale gestita o in modalità di rete virtuale bring-your-own. È possibile crearli come cluster pubblici (con accesso al server API disponibile tramite un IP pubblico) o cluster privati (in cui il server API è accessibile solo tramite connettività di rete virtuale privata). È anche possibile alternare uno stato pubblico e privato senza ridistribuire il cluster.

Creare un gruppo di risorse

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

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

Distribuire un cluster pubblico

  • Distribuire un cluster del servizio Azure Kubernetes pubblico con l'Integrazione della rete virtuale del server API per la rete virtuale gestita usando il comando az aks create con il flag --enable-api-server-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

  • Distribuire un cluster del servizio Azure Kubernetes privato con l'Integrazione della rete virtuale del server API per la rete virtuale gestita usando il comando az aks create con i flag --enable-api-server-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
    

Creare un cluster del servizio Azure Kubernetes privato con Integrazione della rete virtuale del server API usando la rete virtuale bring-your-own

Quando si usa la rete virtuale bring-your-own, è necessario creare e delegare una subnet del server API a Microsoft.ContainerService/managedClusters, che concede al servizio Azure Kubernetes le autorizzazioni per inserire i pod del server API e il servizio di bilanciamento 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. Le dimensioni minime supportate della subnet del server API sono /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 del servizio Azure Kubernetes riserva almeno 9 IP nello spazio indirizzi della subnet. L'esaurimento degli indirizzi IP può impedire il ridimensionamento del server API e causare un'interruzione del server API.

Creare un gruppo di risorse

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

Creare una 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-api-server-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-api-server-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 del servizio Azure Kubernetes esistente in Integrazione della rete virtuale del server API

È possibile convertire i cluster del servizio Azure Kubernetes pubblici/privati esistenti in cluster di Integrazione della rete virtuale del server API fornendo una subnet del server API che soddisfi i requisiti elencati in precedenza. Questi requisiti includono: nella stessa rete virtuale dei nodi del cluster, le autorizzazioni concesse per l'identità del cluster del servizio Azure Kubernetes, non usate da altre risorse come l'endpoint privato, e dimensioni di almeno /28. La conversione del cluster è una migrazione unidirezionale. I cluster non possono avere l’Integrazione della rete virtuale del server API disabilitata dopo che è stata abilitata.

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 l'indirizzo IP del server API è stato configurato in qualsiasi firewall o regola del gruppo di sicurezza di rete, potrebbe essere necessario aggiornare tali regole.

  • 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>
    

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.

Nota

--disable-private-cluster è al momento è 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
    

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>
    

Passaggi successivi

Per le procedure consigliate associate, vedere Procedure consigliate per la connettività di rete e la sicurezza nel servizio Azure Kubernetes.