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

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 il problema di ritiro di GitHub e l'annuncio di ritiro degli aggiornamenti di Azure. Per rimanere informati sugli annunci e sugli aggiornamenti, seguire le note di rilascio di AKS.

Limitazioni

  • Gli intervalli ip autorizzati si applicano solo al server API pubblico. Non è possibile applicare questi intervalli all'endpoint del server API privato.
  • 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.
  • 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.

Il diagramma seguente illustra un'architettura hub-spoke per un cluster del servizio Azure Kubernetes privato con DNS personalizzato:

Hub e spoke del cluster privato

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

Limitazioni per i cluster del servizio Azure Kubernetes privati con DNS personalizzato

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

Creare un gruppo di risorse

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>

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

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

Creare un cluster AKS privato con rete avanzata

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 <subnet-id>: ID risorsa di una subnet esistente in una rete virtuale.
  • --dns-service-ip <dns-service-ip>: indirizzo IP disponibile all'interno dell'intervallo di indirizzi del servizio Kubernetes da usare per il servizio DNS del cluster. Ad esempio: 10.2.0.10.
  • --service-cidr <service-cidr>: intervallo IP di notazione CIDR da cui assegnare indirizzi IP del cluster di servizi. Ad esempio: 10.2.0.0/24.
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 <dns-service-ip> \
    --service-cidr <service-cidr> \
    --generate-ssh-keys

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.

Parametri chiave in questo comando:

  • --disable-public-fqdn: disabilita il nome di dominio completo (FQDN) pubblico per il server API.
  • --assign-identity <resource-id>: specifica l'identità gestita da usare per il cluster.
  • --private-dns-zone [system|none]: specifica la zona DNS privata da usare per il cluster. system è il valore predefinito durante la configurazione di una zona DNS privata. Se si omette --private-dns-zone, AKS crea una zona DNS privata nel gruppo di risorse del nodo. none disabilita la creazione di una zona DNS privata.
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] \
    --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.

Parametri chiave in questo comando:

  • --disable-public-fqdn: disabilita il nome di dominio completo (FQDN) pubblico per il server API.
az aks update \
    --name <private-cluster-name> \
    --resource-group <private-cluster-resource-group> \
    --disable-public-fqdn

Opzioni di configurazione per DNS 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 queste risorse dopo la creazione del cluster, perché possono 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.

Considerazioni sul DNS privato

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.ContainerService 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

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. system è il valore predefinito durante la configurazione di una zona DNS privata. Se si omette --private-dns-zone, AKS crea una zona DNS privata nel gruppo di risorse del nodo. none disabilita la creazione di una zona DNS privata.
  • --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

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

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 esistente o di una sottozone 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 .
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

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

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 esistente 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 .
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

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