Condividi tramite


Creare e configurare un cluster del servizio Azure Kubernetes per l'uso di nodi virtuali nel portale di Azure

I nodi virtuali abilitano la comunicazione di rete tra i pod eseguiti in Istanze di Azure Container (ACI) e nel cluster del servizio Azure Kubernetes (AKS). Per consentire la comunicazione viene creata una subnet di rete virtuale e vengono assegnate autorizzazioni delegate. I nodi virtuali funzionano solo con i cluster del servizio Azure Kubernetes creati usando una rete avanzata (Azure CNI). I cluster del servizio Azure Kubernetes vengono creati con una rete di base (kubenet) per impostazione predefinita.

Questo articolo illustra come creare una rete virtuale e le subnet e quindi distribuire un cluster del servizio Azure Kubernetes che usa reti avanzate usando il portale di Azure.

Nota

Per una panoramica della disponibilità e delle limitazioni dell'area del nodo virtuale, vedere Usare nodi virtuali nel servizio Azure Kubernetes.

Operazioni preliminari

È necessario che il provider di servizi ACI sia registrato nell’abbonamento.

  • Controllare lo stato della registrazione del provider ACI usando il comando az provider list.

    az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table
    

    L'output di esempio seguente mostra che il provider Microsoft.ContainerInstance è Registrato:

    Namespace                    RegistrationState    RegistrationPolicy
    ---------------------------  -------------------  --------------------
    Microsoft.ContainerInstance  Registered           RegistrationRequired
    
  • Se il provider è NotRegistered, registrarlo usando il comando az provider register.

    az provider register --namespace Microsoft.ContainerInstance
    

Creare un cluster del servizio Azure Kubernetes

  1. Passare alla home page del portale di Azure.
  2. Selezionare Crea una risorsa>Contenitori.
  3. Nella risorsa del servizio Azure Kubernetes (AKS) selezionare Creare.
  4. Nella pagina Informazioni di base configurare le opzioni seguenti:
    • Dettagli del progetto: selezionare una sottoscrizione di Azure, quindi selezionare o creare un gruppo di risorse di Azure, ad esempio myResourceGroup.
    • Dettagli del cluster: immettere un nome cluster Kubernetes, ad esempio myAKSCluster. Selezionare un'area e una versione di Kubernetes per il cluster del servizio Azure Kubernetes.
  5. Selezionare Avanti: Pool di nodi e selezionare *Abilitare i nodi virtuali. Screenshot che mostra la creazione di un cluster con nodi virtuali abilitati nel portale di Azure. L'opzione ‘Abilita nodi virtuali’ è evidenziata.
  6. Selezionare Rivedi e crea.
  7. Al termine della convalida selezionare Crea.

Per impostazione predefinita, questo processo crea un'identità del cluster gestita, usata per la comunicazione e l'integrazione del cluster con altri servizi di Azure. Per altre informazioni, vedere Usare le identità gestite. È anche possibile usare un'entità servizio come identità del cluster.

Questo processo configura il cluster per la rete avanzata e i nodi virtuali per usare la propria subnet di rete virtuale di Azure. La subnet include autorizzazioni delegate per la connessione delle risorse di Azure nel cluster del servizio Azure Kubernetes. Se non è già presente una subnet delegata, il portale di Azure crea e configura una rete virtuale di Azure e la subnet con i nodi virtuali.

Stabilire la connessione al cluster

Azure Cloud Shell è una shell interattiva gratuita che è possibile usare per eseguire i passaggi descritti in questo articolo. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account. Per gestire un cluster Kubernetes, usare kubectl, il client da riga di comando di Kubernetes. Il client kubectl è preinstallato in Azure Cloud Shell.

  1. Configurare kubectl per connettersi al cluster Kubernetes usando il comando az aks get-credentials. L'esempio seguente ottiene le credenziali per il nome cluster myAKSCluster nel gruppo di risorse denominato myResourceGroup:

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Verificare la connessione al cluster usando il kubectl get nodes.

    kubectl get nodes
    

    L'output di esempio seguente mostra il singolo nodo VM creato e il nodo virtuale per Linux denominato virtual-node-aci-linux:

    NAME                           STATUS    ROLES     AGE       VERSION
    virtual-node-aci-linux         Ready     agent     28m       v1.11.2
    aks-agentpool-14693408-0       Ready     agent     32m       v1.11.2
    

Distribuire un'app di esempio

  1. In Azure Cloud Shell creare un file denominato virtual-node.yaml e copiarlo nel codice YAML seguente:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aci-helloworld
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aci-helloworld
      template:
        metadata:
          labels:
            app: aci-helloworld
        spec:
          containers:
          - name: aci-helloworld
            image: mcr.microsoft.com/azuredocs/aci-helloworld
            ports:
            - containerPort: 80
          nodeSelector:
            kubernetes.io/role: agent
            beta.kubernetes.io/os: linux
            type: virtual-kubelet
          tolerations:
          - key: virtual-kubelet.io/provider
            operator: Exists
    

    YAML definisce un nodeSelector e la tolleranza, che consentono di pianificare il pod nel nodo virtuale. Al pod viene assegnato un indirizzo IP interno della subnet di rete virtuale di Azure delegata per l'uso con nodi virtuali.

  2. Eseguire l'applicazione usando il comando kubectl apply.

    kubectl apply -f virtual-node.yaml
    
  3. Visualizzare i pod pianificati nel nodo usando il comando kubectl get pods con l'argomento -o wide.

    kubectl get pods -o wide
    

    L'output di esempio seguente mostra il pod virtual-node-helloworld pianificato nel nodo virtual-node-linux.

    NAME                                     READY     STATUS    RESTARTS   AGE       IP           NODE
    virtual-node-helloworld-9b55975f-bnmfl   1/1       Running   0          4m        10.241.0.4   virtual-node-aci-linux
    

Nota

Se si usano immagini archiviate nel Registro Azure Container, configurare e usare un segreto Kubernetes. Con una limitazione dei nodi virtuali non è possibile usare l'autenticazione integrata dell'entità servizio Microsoft Entra. Se non si usa un segreto, i pod pianificati nei nodi virtuali non si avviano e segnalano l'errore HTTP response status code 400 error code "InaccessibleImage".

Testare il pod del nodo virtuale

Per testare il pod in esecuzione nel nodo virtuale, passare all'applicazione demo con un client Web. Il pod è assegnato un indirizzo IP interno, in modo da eseguire facilmente il test della connettività da un altro pod nel cluster del servizio Azure Kubernetes.

  1. Creare un pod di prova e collegare ad esso una sessione del terminale usando il comando kubectl run seguente.

    kubectl run -it --rm virtual-node-test --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  2. Installare curl usando il comando apt-get seguente.

    apt-get update && apt-get install -y curl
    
  3. Accedere all'indirizzo del pod usando il comando curl seguente e specificare l'indirizzo IP interno.

    curl -L http://10.241.0.4
    

    L'output di esempio condensato seguente mostra l’applicazione demo.

    <html>
    <head>
      <title>Welcome to Azure Container Instances!</title>
    </head>
    [...]
    
  4. Chiudere la sessione del terminale nel pod del test con exit che elimina anche il pod.

    exit
    

Passaggi successivi

In questo articolo è stato pianificato un pod sul nodo virtuale ed è stato assegnato un indirizzo IP interno privato. In alternativa, è possibile creare una distribuzione di servizio e instradare il traffico al pod attraverso un bilanciamento del carico o un controller in ingresso. Per altre informazioni, vedereCreare un controller di ingresso di base nel servizio Azure Kubernetes.

I nodi virtuali sono un componente di una soluzione di scalabilità nel servizio Azure Kubernetes. Per altre informazioni sulle soluzioni di scalabilità, vedere gli articoli seguenti: