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
- Passare alla home page del portale di Azure.
- Selezionare Crea una risorsa>Contenitori.
- Nella risorsa del servizio Azure Kubernetes (AKS) selezionare Creare.
- 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.
- Selezionare Avanti: Pool di nodi e selezionare *Abilitare i nodi virtuali.
- Selezionare Rivedi e crea.
- 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.
Configurare
kubectl
per connettersi al cluster Kubernetes usando il comandoaz 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
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
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.
Eseguire l'applicazione usando il comando
kubectl apply
.kubectl apply -f virtual-node.yaml
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 nodovirtual-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.
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
Installare
curl
usando il comandoapt-get
seguente.apt-get update && apt-get install -y curl
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> [...]
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:
Azure Kubernetes Service