Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il servizio Azure Kubernetes è un servizio Kubernetes gestito che permette di distribuire e gestire rapidamente i cluster. In questo articolo, si utilizza Azure CLI per distribuire un cluster AKS che esegue container Windows Server. Si distribuisce anche un'applicazione di esempio ASP.NET in un contenitore di Windows Server nel cluster.
Nota
Per iniziare con il provisioning rapido di un cluster AKS, questo articolo include i passaggi per distribuire un cluster con impostazioni predefinite per soli scopi 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 un account Azure, creare un account gratuito prima di iniziare.
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione ad Azure Cloud Shell.
Se si preferisce eseguire localmente i comandi di riferimento della CLI, installare l'Azure CLI. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Eseguire l'autenticazione ad Azure con l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
- Questo articolo richiede la versione 2.0.64 o successiva dell'interfaccia della riga di comando di Azure. Se si sta usando Azure Cloud Shell, la versione più recente è già installata.
- Assicurarsi che l'identità usata per creare il cluster disponga delle autorizzazioni minime adeguate. Per maggiori informazioni sull'accesso e l'identità per il servizio Azure Kubernetes, vedere Opzioni di accesso e identità per il servizio Azure Kubernetes (AKS).
- Se si hanno più sottoscrizioni di Azure, selezionare l'ID sottoscrizione appropriato in cui devono essere fatturate le risorse, usando il comando
az account set. Per altre informazioni, vedere Come gestire le sottoscrizioni di Azure - Interfaccia della riga di comando di Azure. - Se si usa
--os-sku Windows2025, è necessario installare l'estensioneaks-previewe registrare il flag di anteprima. La versione minima è 18.0.0b40.
Installare l'estensione aks-preview
Importante
Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
- Installare l'estensione CLI di Azure utilizzando il comando
aks-preview.
az extension add --name aks-preview
- Eseguire l'aggiornamento alla versione più recente dell'estensione usando il comando
az extension update. Windows Server 2025 richiede almeno 18.0.0b40.
az extension update --name aks-preview
Registrare il flag di funzionalità AksWindows2025Preview
- Registrare il flag di funzionalità
AksWindows2025Previewusando il comando [az feature register][az-feature-register].
az feature register --name AksWindows2025Preview --namespace Microsoft.ContainerService
- Verificare lo stato della registrazione usando il comando [
az feature show][az-feature-show]. Sono necessari alcuni minuti per visualizzare lo stato Registered.
az feature show --name AksWindows2025Preview --namespace Microsoft.ContainerService
Quando lo stato riflette Registered, eseguire l'aggiornamento della registrazione del provider di risorse Microsoft.ContainerService usando il comando [
az provider register][az-provider-register].az provider register --namespace Microsoft.ContainerService
Creare un gruppo di risorse
Un gruppo di risorse di Azure è un gruppo logico in cui le risorse di Azure vengono distribuite e gestite. Quando si crea un gruppo di risorse, viene chiesto di specificare una posizione. Questa posizione è la posizione in cui vengono archiviati i metadati del gruppo di risorse e dove vengono eseguite le risorse in Azure se non si specifica un'altra area durante la creazione delle risorse.
Creare un gruppo di risorse usando il comando
az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località WestUS2 .export RANDOM_SUFFIX=$(openssl rand -hex 3) export REGION="canadacentral" export MY_RESOURCE_GROUP_NAME="myAKSResourceGroup$RANDOM_SUFFIX" az group create --name $MY_RESOURCE_GROUP_NAME --location $REGIONRisultati:
{ "id": "/subscriptions/xxxxx-xxxxx-xxxxx-xxxxx/resourceGroups/myResourceGroupxxxxx", "location": "WestUS2", "managedBy": null, "name": "myResourceGroupxxxxx", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": "Microsoft.Resources/resourceGroups" }
Creare un cluster AKS
In questa sezione creiamo un cluster AKS con la configurazione seguente:
- Il cluster è configurato con due nodi per garantire che funzioni in modo affidabile. Un nodo è una macchina virtuale di Azure che esegue i componenti del nodo Kubernetes e il runtime del contenitore.
- I parametri
--windows-admin-passworde--windows-admin-usernameimpostano le credenziali di amministratore per tutti i nodi di Windows Server nel cluster e devono soddisfare i requisiti delle password di Windows Server. - Il pool di nodi usa
VirtualMachineScaleSets.
Usare i seguenti passaggi per creare il cluster AKS con l'interfaccia della riga di comando di Azure:
Creare un nome utente da usare come credenziali di amministratore per i nodi di Windows Server nel cluster.
export WINDOWS_USERNAME="winadmin"Creare una password per il nome utente amministratore creato nel passaggio precedente. La password deve avere un minimo di 14 caratteri e soddisfare i requisiti di complessità delle password di Windows Server.
export WINDOWS_PASSWORD=$(echo "P@ssw0rd$(openssl rand -base64 10 | tr -dc 'A-Za-z0-9!@#$%^&*()' | cut -c1-6)")Creare il cluster usando il comando
az aks createe specificare i parametri--windows-admin-usernamee--windows-admin-password. Il comando di esempio seguente crea un cluster usando i valori diWINDOWS_USERNAMEeWINDOWS_PASSWORDimpostati nei comandi precedenti. Un suffisso casuale viene aggiunto al nome del cluster per l'univocità.export MY_AKS_CLUSTER="myAKSCluster$RANDOM_SUFFIX" az aks create \ --resource-group $MY_RESOURCE_GROUP_NAME \ --name $MY_AKS_CLUSTER \ --node-count 2 \ --enable-addons monitoring \ --generate-ssh-keys \ --windows-admin-username $WINDOWS_USERNAME \ --windows-admin-password $WINDOWS_PASSWORD \ --vm-set-type VirtualMachineScaleSets \ --network-plugin azureIl comando viene completato dopo pochi minuti e vengono restituite informazioni in formato JSON sul cluster. Occasionalmente, il provisioning del cluster può richiedere più tempo. Attendere fino a 10 minuti per il provisioning.
Se viene visualizzato un errore di convalida della password e la password impostata soddisfa i requisiti di lunghezza e complessità, provare a creare il gruppo di risorse in un'altra area. Provare quindi a creare il cluster con il nuovo gruppo di risorse.
Se non si specifica un nome utente e una password amministratore durante la creazione del pool di nodi, il nome utente viene impostato su azureuser e la password viene impostata su un valore casuale. Per altre informazioni, vedere Domande frequenti su Windows Server
Non è possibile modificare il nome utente dell'amministratore, ma è possibile modificare la password di amministratore usata dal cluster del servizio Azure Kubernetes per i nodi di Windows Server usando
az aks update. Per altre informazioni, vedere Domande frequenti su Windows Server.Per eseguire un cluster AKS che supporti i pool di nodi per i contenitori di Windows Server, il cluster deve utilizzare un criterio di rete che impieghi il plug-in di rete Azure CNI (avanzato). Il parametro
--network-plugin azurespecifica Azure CNI.
Aggiungere un pool di nodi
Per impostazione predefinita, tutti i cluster del servizio Azure Kubernetes vengono creati con un pool di nodi in grado di eseguire contenitori Linux. È necessario aggiungere un pool di nodi Windows in grado di eseguire contenitori di Windows Server insieme al pool di nodi Linux. Per verificare se nel cluster è presente un pool di nodi Windows, è possibile visualizzare i nodi nel cluster usando il kubectl get nodes -o wide comando .
Per creare un pool di nodi windows, è necessario specificare un oggetto supportato OsType e OsSku. Usare le informazioni nella tabella seguente per determinare quale sia appropriato per il cluster:
OsType |
OsSku |
Impostazione predefinita | Versioni di K8s supportate | Dettagli |
|---|---|---|---|---|
windows |
Windows2025 |
Attualmente disponibile in anteprima. Non predefinito. | 1.32 e successive | Impostazioni predefinite aggiornate: containerd 2.0, l'immagine di generazione 2 viene utilizzata per impostazione predefinita. |
windows |
Windows2022 |
Impostazione predefinita in K8s 1.25-1.35 | Non disponibile in K8s 1.36+ | Ritira nel marzo 2027. Impostazioni predefinite aggiornate: FIPS è abilitato per impostazione predefinita. |
windows |
Windows2019 |
Impostazione predefinita in K8s 1.24 e versioni successive | Non disponibile in K8s 1.33+ | Ritira nel marzo 2026. |
Windows Server 2022 è il sistema operativo predefinito per Kubernetes versioni 1.25-1.35. Windows Server 2019 è il sistema operativo predefinito per le versioni precedenti. Se non si specifica uno SKU specifico del sistema operativo, Azure crea il nuovo pool di nodi con lo SKU predefinito per la versione di Kubernetes usata dal cluster.
Nota
- Windows Server 2019 si ritira il 1° marzo 2026. Dopo tale data, Azure Kubernetes Service (AKS) non produrrà più nuove immagini del nodo né fornirà patch di sicurezza. Dopo tale data, non sarà possibile creare nuovi pool di nodi con Windows Server 2019 in qualsiasi versione di Kubernetes. Tutti i pool di nodi esistenti con Windows Server 2019 non saranno supportati. Windows Server 2019 non è supportato in Kubernetes versione 1.33 e successive. A partire dal 1° aprile 2027, AKS rimuoverà tutte le immagini dei nodi esistenti per Windows Server 2019, pertanto le operazioni di ridimensionamento avranno esito negativo.
- Windows Server 2022 ritira il 15 marzo 2027. Dopo tale data, AKS (Azure Kubernetes Service) non produrrà più nuove immagini del nodo né fornirà patch di sicurezza. Dopo tale data, non sarà possibile creare nuovi pool di nodi con Windows Server 2022 in qualsiasi versione di Kubernetes. Tutti i pool di nodi esistenti con Windows Server 2022 non saranno supportati. Windows Server 2022 non è supportato in Kubernetes versione 1.36 e successive. A partire dal 1° aprile 2028, AKS rimuoverà tutte le immagini dei nodi esistenti per Windows Server 2022, il che significa che le operazioni di scalabilità falliranno.
Per altre informazioni, vedere le Note sulla versione di AKS. Per rimanere aggiornati sulle versioni più recenti del sistema operativo Windows Server e ottenere altre informazioni sulla roadmap di ciò che è pianificato per il supporto nel servizio Azure Kubernetes, vedere la roadmap pubblica del servizio Azure Kubernetes.
Aggiungere un pool di nodi di Windows usando il comando
az aks nodepool addcon un oggetto specificatoOsTypeeOsSku. Se non si specifica uno SKU specifico del sistema operativo, Azure crea il nuovo pool di nodi con lo SKU predefinito per la versione di Kubernetes usata dal cluster.az aks nodepool add \ --resource-group $MY_RESOURCE_GROUP_NAME \ --cluster-name $MY_AKS_CLUSTER \ --os-type Windows \ --os-sku Windows2022 \ --name npwin \ --node-count 1Questo comando crea un nuovo pool di nodi denominato npwin e lo aggiunge a myAKSCluster. Il comando usa anche la subnet predefinita nella rete virtuale predefinita creata durante l'esecuzione di
az aks create.
Stabilire la connessione al cluster
Si usa kubectl, il client della riga di comando Kubernetes per gestire i cluster Kubernetes. Se si usa Azure Cloud Shell, kubectl è già installato. Se si vuole installare ed eseguire kubectl localmente, usare il az aks install-cli comando .
Configurare
kubectlper connettersi al cluster Kubernetes usando il comandoaz 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 $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTERVerificare la connessione al cluster usando il comando
kubectl get, da cui si ottiene un elenco dei nodi del cluster.kubectl get nodes -o wideL'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 INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME aks-nodepool1-20786768-vmss000000 Ready agent 22h v1.27.7 10.224.0.4 <none> Ubuntu 22.04.3 LTS 5.15.0-1052-azure containerd://1.7.5-1 aks-nodepool1-20786768-vmss000001 Ready agent 22h v1.27.7 10.224.0.33 <none> Ubuntu 22.04.3 LTS 5.15.0-1052-azure containerd://1.7.5-1 aksnpwin000000 Ready agent 20h v1.27.7 10.224.0.62 <none> Windows Server 2022 Datacenter 10.0.20348.2159 containerd://1.6.21+azureNota
Il runtime del contenitore per ogni pool di nodi viene visualizzato in CONTAINER-RUNTIME. I valori di runtime del contenitore iniziano con
containerd://, il che significa che ognuno usacontainerdper il runtime del contenitore.
Distribuire l'applicazione
Un file manifesto di Kubernetes definisce uno stato desiderato per il cluster, ad esempio le immagini del contenitore da eseguire. In questo articolo si usa un manifesto per creare tutti gli oggetti necessari per eseguire l'applicazione di esempio ASP.NET in un contenitore di Windows Server. Questo manifesto include una distribuzione di 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. AKS richiede che i container Windows Server siano basati su immagini di Windows Server 2019 o successive. Il file manifesto di Kubernetes deve anche definire un selettore di nodo per indicare al cluster del servizio Azure Kubernetes di eseguire il pod dell'applicazione di esempio ASP.NET in un nodo che sia in grado di eseguire contenitori di Windows Server.
Creare un file denominato
sample.yamle copiarlo 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: samplePer 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 facendo clic sul pulsante Carica/Scarica file e selezionando il file dal file system locale.
Distribuire l'applicazione usando il comando
kubectl applye specificare il nome del manifesto YAML.kubectl apply -f sample.yamlL'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 sianoRunningprima di procedere.kubectl get podsMonitorare lo stato di avanzamento usando il comando
kubectl get servicecon l'argomento--watch.while true; do export EXTERNAL_IP=$(kubectl get service sample -o jsonpath="{.status.loadBalancer.ingress[0].ip}" 2>/dev/null) if [[ -n "$EXTERNAL_IP" && "$EXTERNAL_IP" != "<pending>" ]]; then kubectl get service sample break fi echo "Still waiting for external IP assignment..." sleep 5 doneInizialmente, 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 xx.xx.xx.xx pending xx:xxxx/TCP 2mQuando EXTERNAL-IP passa da pending a un effettivo indirizzo IP pubblico, usare
CTRL-Cper arrestare il processo di controllokubectl.L'output di esempio seguente mostra un indirizzo IP pubblico valido assegnato al servizio:
{ "NAME": "sample", "TYPE": "LoadBalancer", "CLUSTER-IP": "10.0.37.27", "EXTERNAL-IP": "52.179.23.131", "PORT(S)": "80:30572/TCP", "AGE": "2m" }Vedere l'app di esempio in azione aprendo un Web browser all'indirizzo IP esterno del servizio dopo alcuni minuti.
Passaggi successivi
In questa guida introduttiva, hai distribuito un cluster Kubernetes e successivamente un'applicazione di esempio ASP in un container 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 saperne di più sull'Azure Kubernetes Service e per seguire un esempio completo dal codice alla distribuzione, passare all'esercitazione sul cluster Kubernetes.
Azure Kubernetes Service