Distribuire un contenitore Windows Server in un cluster del servizio Azure Kubernetes usando il portale di Azure
Il servizio Azure Kubernetes è un servizio Kubernetes gestito che permette di distribuire e gestire rapidamente i cluster. In questo articolo si distribuisce un cluster del servizio Azure Kubernetes che esegue contenitori di Windows Server usando il portale di Azure. Si distribuisce anche un'applicazione di esempio ASP.NET in un contenitore di Windows Server nel cluster.
Nota
Per iniziare ad effettuare un veloce provisioning di un cluster del servizio Azure Kubernetes, questo articolo include i passaggi per la distribuzione di un cluster con impostazioni predefinite a solo scopo di valutazione. Prima di distribuire un cluster pronto per la produzione, è consigliabile acquisire familiarità con l'architettura di riferimento di base per valutare il modo in cui è allineato ai requisiti aziendali.
Operazioni preliminari
Questa guida introduttiva presuppone una comprensione di base dei concetti relativi a Kubernetes. Per altre informazioni, vedere Concetti di base relativi a Kubernetes per il servizio Azure Kubernetes.
- Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
- Se non si ha familiarità con Azure Cloud Shell, vedere Panoramica di Azure Cloud Shell.
- Assicurarsi che l'identità usata per creare il cluster disponga delle autorizzazioni minime appropriate. Per altre informazioni sull'accesso e l'identità per il servizio Azure Kubernetes, vedere Opzioni di accesso e identità per il servizio Azure Kubernetes.
Creare un cluster del servizio Azure Kubernetes
Accedere al portale di Azure.
Nella home page del portale di Azure selezionare Crea una risorsa.
Nella sezione Categorie selezionare Contenitori>servizio Azure Kubernetes.
Configurare i valori seguenti nella scheda Informazioni di base:
- In Dettagli progetto:
- Sottoscrizione: selezionare la sottoscrizione di Azure da usare per questo cluster del servizio Azure Kubernetes.
- Gruppo di risorse: selezionare Crea nuovo, immettere un nome di gruppo di risorse, ad esempio myResourceGroup, quindi selezionare OK. Sebbene sia possibile selezionare un gruppo di risorse esistente, a scopo di test o valutazione, è consigliabile creare un gruppo di risorse per ospitare temporaneamente queste risorse ed evitare di influire sui carichi di lavoro di produzione o sviluppo.
- In dettagli cluster:
Configurazione del set di impostazioni del cluster: selezionare Sviluppo/Test. Per altre informazioni sulle configurazioni predefinite, vedere Set di impostazioni di configurazione del cluster nel portale di Azure.
Nome del cluster Kubernetes: immettere un nome del cluster, ad esempio myAKSCluster.
Area: selezionare un'area, ad esempio Stati Uniti orientali 2.
Zone di disponibilità: selezionare Nessuno.
Piano tariffario del servizio Azure Kubernetes: selezionare Gratuito.
Lasciare i valori predefiniti per le impostazioni rimanenti e selezionare Avanti.
- In Dettagli progetto:
Nella scheda Pool di nodi configurare le impostazioni seguenti:
Selezionare Aggiungi pool di nodi e immettere un nome del pool di nodi, ad esempio npwin. Per un pool di nodi di Windows, il nome deve essere composto da sei caratteri o meno.
Modalità: selezionare Utente.
SKU del sistema operativo: selezionare Windows 2022.
Zone di disponibilità: selezionare Nessuno.
Lasciare deselezionata la casella di controllo Abilita istanze spot di Azure.
Dimensioni nodo: selezionare Scegli una dimensione. Nella pagina Selezione dimensioni macchina virtuale selezionare D2s_v3 e quindi selezionare Seleziona.
Lasciare i valori predefiniti per le impostazioni rimanenti e selezionare Aggiungi.
Selezionare Rivedi e crea per eseguire la convalida nella configurazione del cluster. Al termine della convalida selezionare Crea.
Per creare il cluster del servizio Azure Kubernetes sono necessari alcuni minuti. Al termine della distribuzione, passare alla risorsa selezionando Vai alla risorsa oppure passando al gruppo di risorse del cluster del servizio Azure Kubernetes e selezionando la risorsa servizio Azure Kubernetes.
Stabilire la connessione al cluster
Si usa kubectl, il client della riga di comando Kubernetes per gestire i cluster Kubernetes. kubectl
è già installato se si usa Azure Cloud Shell. Se non si ha familiarità con Cloud Shell, vedere Panoramica di Azure Cloud Shell.
Aprire Cloud Shell selezionando il pulsante
>_
nella parte superiore della pagina del portale di Azure.Configurare
kubectl
per connettersi al cluster Kubernetes usando il comandoaz aks get-credentials
. Il comando seguente scarica le credenziali e configura l'interfaccia della riga di comando di Kubernetes per usarle.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Verificare la connessione al cluster usando il comando
kubectl get nodes
, che restituisce un elenco dei nodi del cluster.kubectl get nodes
L'output di esempio seguente mostra tutti i nodi del cluster. Assicurarsi che lo stato di tutti i nodi sia Pronto:
NAME STATUS ROLES AGE VERSION aks-agentpool-11741175-vmss000000 Ready agent 8m17s v1.29.9 aks-agentpool-11741175-vmss000001 Ready agent 8m17s v1.29.9 aksnpwin000000 Ready agent 8m17s v1.29.9 aks-userpool-11741175-vmss000000 Ready agent 8m17s v1.29.9 aks-userpool-11741175-vmss000001 Ready agent 8m17s v1.29.9
Distribuire l'applicazione
Un file manifesto Kubernetes definisce uno stato desiderato per il cluster, ad esempio le immagini del contenitore da eseguire. In questo argomento di avvio rapido si usa un file manifesto per creare tutti gli oggetti necessari per eseguire l'applicazione di esempio ASP.NET in un contenitore di Windows Server. Questo file manifesto include una distribuzione Kubernetes per l'applicazione di esempio ASP.NET e un servizio Kubernetes esterno per accedere all'applicazione da Internet.
L'applicazione di esempio ASP.NET viene fornita nel quadro degli esempi di .NET Framework ed eseguita in un contenitore di Windows Server. Il file manifesto kubernetes deve definire un selettore di nodo per indicare al cluster del servizio Azure Kubernetes di eseguire il pod dell'applicazione ASP.NET di esempio in un nodo in grado di eseguire contenitori di Windows Server.
Creare un file denominato
sample.yaml
e incollarlo nella definizione YAML seguente.apiVersion: apps/v1 kind: Deployment metadata: name: sample labels: app: sample spec: replicas: 1 template: metadata: name: sample labels: app: sample spec: nodeSelector: "kubernetes.io/os": windows containers: - name: sample image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp resources: limits: cpu: 1 memory: 800M ports: - containerPort: 80 selector: matchLabels: app: sample --- apiVersion: v1 kind: Service metadata: name: sample spec: type: LoadBalancer ports: - protocol: TCP port: 80 selector: app: sample
Per una suddivisione dei file manifesto YAML, vedere Distribuzioni e manifesti YAML.
Se si crea e si salva il file YAML in locale, è possibile caricare il file manifesto nella directory predefinita in CloudShell selezionando il pulsante Carica/Scarica file e selezionando il file dal file system locale.
Distribuire l'applicazione usando il comando
kubectl apply
e specificare il nome del manifesto YAML.kubectl apply -f sample.yaml
L'output di esempio seguente mostra la distribuzione e il servizio creati correttamente:
deployment.apps/sample created service/sample created
Testare l'applicazione
Quando l'applicazione viene eseguita, un servizio Kubernetes espone il front-end dell'applicazione a Internet. Questo processo può richiedere alcuni minuti. Occasionalmente, il provisioning del servizio può richiedere più tempo. Attendere fino a 10 minuti per il provisioning.
Controllare lo stato dei pod distribuiti usando il comando
kubectl get pods
. Fare in modo che tutti i pod sianoRunning
prima di procedere.kubectl get pods
Monitorare lo stato di avanzamento usando il comando
kubectl get service
con l'argomento--watch
.kubectl get service sample --watch
Inizialmente, l'output mostra l’EXTERNAL-IP per il servizio di esempio come in sospeso:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Quando EXTERNAL-IP passa da pending a un effettivo indirizzo IP pubblico, usare
CTRL-C
per arrestare il processo di controllokubectl
.Vedere l'app di esempio in azione aprendo un Web browser all'indirizzo IP esterno del servizio.
Eliminare risorse
Se non si prevede di eseguire l'esercitazione servizio Azure Kubernetes, è consigliabile eliminare il cluster per evitare di incorrere in addebiti per Azure.
Nel portale di Azure passare al gruppo di risorse.
Selezionare Elimina gruppo di risorse.
Immettere il nome del gruppo di risorse per confermare l'eliminazione e selezionare Elimina.
Nella finestra di dialogo conferma eliminazione selezionare Elimina.
Nota
Il cluster del servizio Azure Kubernetes è stato creato con l'identità gestita assegnata dal sistema (opzione di identità predefinita usata in questa guida introduttiva), l'identità viene gestita dalla piattaforma e non richiede la rimozione.
Passaggi successivi
In questa guida introduttiva è stato distribuito un cluster Kubernetes e quindi è stata distribuita un'applicazione di esempio ASP.NET in un contenitore di Windows Server. Questa applicazione di esempio è solo a scopo dimostrativo e non rappresenta tutte le procedure consigliate per le applicazioni Kubernetes. Per indicazioni sulla creazione di soluzioni complete con il servizio Azure Kubernetes per la produzione, vedere Linee guida per la soluzione del servizio Azure Kubernetes.
Per altre informazioni sul servizio Azure Kubernetes e per un esempio completo di distribuzione del codice, passare all'esercitazione sul cluster Kubernetes.
Azure Kubernetes Service