Condividi tramite


Creare un cluster del servizio Azure Kubernetes privato

Questo articolo illustra come distribuire un cluster del servizio Azure Kubernetes basato su collegamento privato. Se si è interessati a creare un cluster del servizio Azure Kubernetes senza collegamento privato o tunnel necessario, vedere Creare un cluster del servizio Azure Kubernetes con l'integrazione della rete virtuale del server API.

Panoramica dei cluster privati in AKS

In un cluster privato, il piano di controllo o il server API dispone di indirizzi IP interni definiti nel documento RFC1918 - Allocazione indirizzi per Internet privato . Usando un cluster privato è possibile garantire che il traffico di rete tra il server API e i pool di nodi rimanga solo sulla rete privata.

Il piano di controllo o il server API si trova in un gruppo di risorse di Azure gestito dal servizio Azure Kubernetes e il cluster o il pool di nodi si trova nel gruppo di risorse. Il server e il cluster o il pool di nodi possono comunicare tra loro tramite il servizio Collegamento privato di Azure nella rete virtuale del server API e un endpoint privato esposto nella subnet del cluster AKS.

Quando si crea un cluster del servizio Azure Kubernetes privato, il servizio Azure Kubernetes crea nomi di dominio privati e pubblici completi (FQDN) con le zone DNS corrispondenti per impostazione predefinita. Per informazioni dettagliate su opzioni di configurazione DNS, vedere Configurare una zona DNS privata, una sottozone DNS privata o un sottodominio personalizzato.

Aree di disponibilità

I cluster privati sono disponibili in regioni pubbliche, Azure Government e Microsoft Azure gestito da 21Vianet dove AKS è supportato.

Importante

Tutte le funzionalità di Microsoft Defender for Cloud verranno ritirati ufficialmente nell'area di Azure in Cina il 18 agosto 2026. A causa di questo prossimo ritiro, i clienti di Azure in Cina non sono più in grado di eseguire l'onboarding di nuove sottoscrizioni al servizio. Una nuova sottoscrizione è una sottoscrizione che non è già stata eseguita per il servizio Microsoft Defender for Cloud prima del 18 agosto 2025, la data dell'annuncio di ritiro. Per altre informazioni sul ritiro, vedere Annuncio relativo alla deprecazione di Microsoft Defender for Cloud in Microsoft Azure gestito da 21Vianet.

I clienti devono collaborare con i rappresentanti dell'account per Microsoft Azure gestito da 21Vianet per valutare l'impatto di questo ritiro sulle proprie operazioni.

Prerequisiti per i cluster AKS privati

  • Interfaccia della riga di comando di Azure versione 2.28.0 o successiva. Eseguire az --version per trovare la versione ed eseguire az upgrade per aggiornare la versione. Se è necessario installare o aggiornare, vedere Installare l'interfaccia della riga di comando di Azure.
  • Se si usa Azure Resource Manager (ARM) o l'API REST di Azure, la versione dell'API di Azure Kubernetes Service deve essere 2021-05-01 o successiva.
  • Per usare un server DNS personalizzato, aggiungere l'indirizzo IP pubblico di Azure 168.63.129.16 come server DNS upstream nel server DNS personalizzato e assicurarsi di aggiungere questo indirizzo IP pubblico come primo server DNS. Per altre informazioni sull'indirizzo IP di Azure, vedere Che cos'è l'indirizzo IP 168.63.129.16?
  • I cluster del servizio Azure Kubernetes esistenti abilitati per l'integrazione rete virtuale del server API possono avere la modalità cluster privato abilitata. Per altre informazioni, vedere Abilitare o disabilitare la modalità cluster privato in un cluster esistente con integrazione rete virtuale del server API.

Importante

A partire dal 30 novembre 2025, il servizio Azure Kubernetes non supporta più o fornisce aggiornamenti della sicurezza per Azure Linux 2.0. L'immagine del nodo Linux 2.0 di Azure è bloccata alla versione 202512.06.0. A partire dal 31 marzo 2026, le immagini dei nodi verranno rimosse e non sarà possibile ridimensionare i pool di nodi. Eseguire la migrazione a una versione di Linux di Azure supportata aggiornando i pool di nodi a una versione di Kubernetes supportata o eseguendo la migrazione ad osSku AzureLinux3. Per altre informazioni, vedere [Ritiro] Pool di nodi di Azure Linux 2.0 nel servizio Azure Kubernetes.

Limitazioni e considerazioni per i cluster AKS privati

  • Non è possibile applicare intervalli IP autorizzati all'endpoint del server API privato, ma si applicano solo al server API pubblico.
  • Le limitazioni del servizio Collegamento privato di Azure si applicano ai cluster privati.
  • Non è disponibile alcun supporto per gli agenti ospitati da Microsoft In Azure DevOps con cluster privati. Considera l'uso di agenti autogestiti.
  • Se è necessario abilitare Registro Azure Container per l'uso con un cluster del servizio Azure Kubernetes privato, configurare un collegamento privato per il registro container nella rete virtuale (VNet) del cluster o configurare il peering tra la rete virtuale del registro contenitori e la rete virtuale del cluster privato.
  • L'eliminazione o la modifica dell'endpoint privato nella subnet del cliente causa l'interruzione del funzionamento del cluster.
  • Il servizio Collegamento privato di Azure è supportato solo in Azure Load Balancer Standard. Azure Load Balancer di base non è supportato.

Hub e spoke con DNS personalizzato per i cluster privati Azure Kubernetes Service (AKS)

Le architetture hub-spoke vengono comunemente usate per distribuire le reti in Azure. In molte di queste distribuzioni, le impostazioni DNS nelle reti virtuali spoke sono configurate in modo da fare riferimento a un server d'inoltro DNS centrale per consentire la risoluzione DNS locale e basata su Azure.

Hub e spoke del cluster privato

Quando si distribuiscono cluster privati di Azure Kubernetes Service (AKS) nelle architetture hub-spoke con DNS personalizzato, tenere a mente le seguenti considerazioni:

  • Quando viene creato un cluster privato, un endpoint privato (1) e una zona DNS privata (2) vengono creati nel gruppo di risorse gestito dal cluster per impostazione predefinita. Il cluster usa un record A nella zona privata per risolvere l'indirizzo IP dell'endpoint privato per la comunicazione con il server API.

  • La zona DNS privata è collegata solo alla rete virtuale a cui sono collegati i nodi del cluster (3), il che significa che l'endpoint privato può essere risolto solo dagli host in tale rete virtuale collegata. Negli scenari in cui non è configurato alcun DNS personalizzato sulla rete virtuale (predefinito), funziona senza problemi poiché gli host puntano a 168.63.129.16 per il DNS, che risolve i record nella zona DNS privata grazie al collegamento.

  • Se si mantiene il comportamento predefinito della zona DNS privata, AKS tenta di collegare la zona direttamente alla rete virtuale Spoke che ospita il cluster anche quando la zona è già collegata a una rete virtuale Hub.

    Nelle reti virtuali spoke che usano server DNS personalizzati, questa azione può non riuscire se l'identità gestita del cluster non dispone di Collaboratore di rete nella rete virtuale spoke.

    Per evitare l'errore, scegliere una delle configurazioni supportate seguenti:

    • Zona DNS privata personalizzata: specificare una zona privata creata in modo preliminare e impostarne privateDNSZone / --private-dns-zone l'ID risorsa. Collegare quella zona alla rete virtuale appropriata, ad esempio alla rete virtuale dell'hub, e impostare publicDNS su false / usare --disable-public-fqdn.
    • Solo DNS pubblico: disabilitare la creazione della zona privata impostando privateDNSZone / --private-dns-zonesu nonee lasciare publicDNS il valore predefinito (true) / non usare --disable-public-fqdn.
  • Se stai utilizzando una tabella di route BYO (Bring Your Own) con kubenet e DNS BYO con cluster privati, la creazione del cluster non riesce. Dopo che la creazione del cluster non è riuscita, è necessario associare l'oggetto RouteTable nel gruppo di risorse del nodo alla subnet.

Quando si utilizza un DNS personalizzato con cluster AKS privati, tenere a mente le seguenti limitazioni:

  • L'impostazione su privateDNSZone / --private-dns-zonenoneepublicDNS: false / --disable-public-fqdn contemporaneamente non è supportata.
  • L'inoltro condizionale non supporta i sottodomini.

Creare un cluster AKS privato con la rete di base di default

  1. Creare un gruppo di risorse usando il comando az group create. È anche possibile usare un gruppo di risorse esistente per il cluster del servizio Azure Kubernetes.

    az group create \
        --name <private-cluster-resource-group> \
        --location <location>
    
  2. Creare un cluster privato con la rete di base predefinita usando il comando az aks create con il flag --enable-private-cluster.

    Parametri chiave in questo comando:

    • --enable-private-cluster: abilita la modalità cluster privato.
    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --generate-ssh-keys
    
  3. Configurare kubectl per connettersi al cluster AKS privato.

Creare un cluster AKS privato con rete avanzata

  1. Creare un gruppo di risorse usando il comando az group create. È anche possibile usare un gruppo di risorse esistente per il cluster del servizio Azure Kubernetes.

    az group create \
        --name <private-cluster-resource-group> \
        --location <location>
    
  2. Creare un cluster privato con funzionalità di rete avanzate usando il az aks create comando .

    Parametri chiave in questo comando:

    • --enable-private-cluster: abilita la modalità cluster privato.
    • --network-plugin azure: specifica il plug-in di rete CNI di Azure.
    • --vnet-subnet-id: ID risorsa di una subnet esistente in una rete virtuale.
    • --dns-service-ip: indirizzo IP disponibile all'interno dell'intervallo di indirizzi del servizio Kubernetes da usare per il servizio DNS del cluster.
    • --service-cidr: intervallo IP di notazione CIDR da cui assegnare indirizzi IP del cluster di servizi.
    az aks create \
        --resource-group <private-cluster-resource-group> \
        --name <private-cluster-name> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --network-plugin azure \
        --vnet-subnet-id <subnet-id> \
        --dns-service-ip 10.2.0.10 \
        --service-cidr 10.2.0.0/24
        --generate-ssh-keys
    
  3. Configurare kubectl per connettersi al cluster AKS privato.

Usare domini personalizzati con cluster privati di AKS

Per configurare domini personalizzati che possono essere risolti internamente, vedere Usare domini personalizzati.

Disabilitare un FQDN pubblico in un cluster del servizio Azure Kubernetes privato

Disabilitare un FQDN pubblico in un nuovo cluster

  • Disabilitare un FQDN pubblico durante la creazione di un cluster del servizio Azure Kubernetes privato usando il comandoaz aks create con il flag--disable-public-fqdn.

    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resource-id> \
        --private-dns-zone <private-dns-zone-mode> \
        --disable-public-fqdn \
        --generate-ssh-keys
    

Disabilitare un FQDN pubblico in un cluster esistente

  • Disabilitare un FQDN pubblico in un cluster del servizio Azure Kubernetes esistente usando il comando az aks update con il flag --disable-public-fqdn.

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

Configurare una zona DNS privata, una sottozone DNS privata o un sottodominio personalizzato per un cluster del servizio Azure Kubernetes privato

È possibile configurare le impostazioni DNS private per un cluster AKS privato utilizzando l'interfaccia della riga di comando di Azure (con il parametro --private-dns-zone) o un modello di Azure Resource Manager (ARM) (con la proprietà privateDNSZone). La tabella seguente illustra le opzioni disponibili per il --private-dns-zone parametro/ privateDNSZone proprietà:

Impostazione Description
system Valore predefinito durante la configurazione di una zona DNS privata. Se si omette --private-dns-zone / privateDNSZone, AKS crea una zona DNS privata nel gruppo di risorse del nodo.
none Se si imposta --private-dns-zone / privateDNSZone su none, il servizio Azure Kubernetes non crea una zona DNS privata.
<custom-private-dns-zone-resource-id> Per usare questo parametro, è necessario creare una zona DNS privata nel formato seguente per il cloud globale di Azure: privatelink.<region>.azmk8s.io o <subzone>.privatelink.<region>.azmk8s.io. Per un uso futuro è necessario l'ID risorsa della zona DNS privata. È necessaria anche un'identità assegnata dall'utente o un principale del servizio con i ruoli Collaboratore zona DNS privata e Collaboratore rete. Per i cluster che usano l'integrazione della rete virtuale del server API, una zona DNS privata supporta il formato di denominazione di private.<region>.azmk8s.io o <subzone>.private.<region>.azmk8s.io. Non è possibile modificare o eliminare questa risorsa dopo la creazione del cluster, perché può causare problemi di prestazioni e errori di aggiornamento del cluster. È possibile usare --fqdn-subdomain <subdomain> con <custom-private-dns-zone-resource-id> solo per fornire funzionalità di sottodominio a privatelink.<region>.azmk8s.io. Se si specifica una sottozone, è previsto un limite di 32 caratteri per il <subzone> nome.

Quando si configura il DNS privato per un cluster del servizio Azure Kubernetes privato, tenere presenti le considerazioni seguenti:

  • Se la zona DNS privata si trova in una sottoscrizione diversa rispetto al cluster del servizio Azure Kubernetes, è necessario registrare il provider di Azure Microsoft.ContainerServices in entrambe le sottoscrizioni.
  • Se il cluster del servizio Azure Kubernetes è configurato con un'entità servizio Active Directory, il servizio Azure Kubernetes non supporta l'uso di un'identità gestita assegnata dal sistema con una zona DNS privata personalizzata. Il cluster deve usare l'autenticazione dell'identità gestita assegnata dall'utente.

Creare un cluster del servizio Azure Kubernetes privato con una zona DNS privata

  1. Creare un cluster AKS privato con una zona DNS privata utilizzando il comando az aks create.

    Parametri chiave in questo comando:

    • --enable-private-cluster: abilita la modalità cluster privato.
    • --private-dns-zone [system|none]: configura la zona DNS privata per il cluster. Il valore predefinito è system.
    • --assign-identity <resource-id>: ID risorsa di un'identità gestita assegnata dall'utente con i ruoli Collaboratore zona DNS privato e Collaboratore rete .
    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resource-id> \
        --private-dns-zone [system|none] \
        --generate-ssh-keys
    
  2. Configurare kubectl per connettersi al cluster AKS privato.

Creare un cluster del servizio Azure Kubernetes privato con una zona DNS privata personalizzata o una sottozona DNS privata

  1. Creare un cluster privato di Azure Kubernetes Service (AKS) con una zona DNS privata personalizzata o un sottodominio utilizzando il comando az aks create.

    Parametri chiave in questo comando:

    • --enable-private-cluster: abilita la modalità cluster privato.
    • --private-dns-zone <custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>: ID risorsa di una zona DNS privata o di una sottozone creata in modo preliminare nel formato seguente per il cloud globale di Azure: privatelink.<region>.azmk8s.io o <subzone>.privatelink.<region>.azmk8s.io.
    • --assign-identity <resource-id>: ID risorsa di un'identità gestita assegnata dall'utente con i ruoli Collaboratore zona DNS privato e Collaboratore rete .
    # The custom private DNS zone name should be in the following format: "<subzone>.privatelink.<region>.azmk8s.io"
    
    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resource-id> \
        --private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>] \
        --generate-ssh-keys
    
  2. Configurare kubectl per connettersi al cluster AKS privato.

Creare un cluster del servizio Azure Kubernetes privato con una zona DNS privata personalizzata e un sottodominio personalizzato

  1. Crea un cluster privato di AKS con una zona DNS privata personalizzata e un sottodominio usando il comando az aks create.

    Parametri chiave in questo comando:

    • --enable-private-cluster: abilita la modalità cluster privato.
    • --private-dns-zone <custom-private-dns-zone-resource-id>: ID risorsa di una zona DNS privata creata in modo preliminare nel formato seguente per il cloud globale di Azure: privatelink.<region>.azmk8s.io.
    • --fqdn-subdomain <subdomain>Il sottodominio da usare per il FQDN del cluster all'interno della zona DNS privata personalizzata.
    • --assign-identity <resource-id>: ID risorsa di un'identità gestita assegnata dall'utente con i ruoli Collaboratore zona DNS privato e Collaboratore rete .
    # The custom private DNS zone name should be in one of the following formats: "privatelink.<region>.azmk8s.io" or "<subzone>.privatelink.<region>.azmk8s.io"
    
    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resource-id> \
        --private-dns-zone <custom-private-dns-zone-resource-id> \
        --fqdn-subdomain <subdomain> \
        --generate-ssh-keys
    
  2. Configurare kubectl per connettersi al cluster AKS privato.

Aggiornare un cluster AKS privato esistente da una zona DNS privata a una pubblica

È possibile eseguire l'aggiornamento solo da byo (bring your own) o system a none. Non sono supportate altre combinazioni di valori di aggiornamento.

Avviso

Quando si aggiorna un cluster privato da byo o system a none, i nodi dell'agente cambiano per usare un FQDN pubblico. In un cluster AKS che usa i set di scalabilità di macchine virtuali di Azure, si esegue un aggiornamento dell'immagine del nodo per aggiornare i nodi con il FQDN pubblico.

  • Aggiornare un cluster privato da byo o system a none usando il az aks update comando con il --private-dns-zone parametro impostato su none.

    az aks update \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --private-dns-zone none
    

Configurare kubectl per connettersi a un cluster AKS privato

Per gestire un cluster Kubernetes, usare il client da riga di comando kubernetes kubectl. kubectl è già installato se si usa Azure Cloud Shell. Per installare kubectl in locale, usare il comando az aks install-cli.

  1. Configurare kubectl per connettersi al cluster Kubernetes usando il comando az aks get-credentials. Questo comando scarica le credenziali e configura l'interfaccia della riga di comando di Kubernetes per usarli.

    az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>
    
  2. Verificare la connessione al cluster usando il comando kubectl get. Questo comando restituisce un elenco dei nodi del cluster.

    kubectl get nodes
    

    Il comando restituisce un output simile all'output di esempio seguente:

    NAME                                STATUS   ROLES   AGE    VERSION
    aks-nodepool1-12345678-vmss000000   Ready    agent   3h6m   v1.15.11
    aks-nodepool1-12345678-vmss000001   Ready    agent   3h6m   v1.15.11
    aks-nodepool1-12345678-vmss000002   Ready    agent   3h6m   v1.15.11