(DEPRECATO) Distribuire il cluster Kubernetes per contenitori Windows

Avviso

Il servizio Azure Container (ACS) è deprecato. Non saranno aggiunte nuove funzionalità al servizio Azure Container. Tutte le API, l'esperienza del portale, i comandi dell'interfaccia della riga di comando e la documentazione sono contrassegnate come deprecate.

Nel 2017 abbiamo presentato il servizio Azure Kubernetes per semplificare la gestione, la distribuzione e le operazioni di Kubernetes. Se si usa l'agente di orchestrazione di Kubernetes, eseguire la migrazione al servizio Azure Kubernetes entro il 31 gennaio 2020. Per iniziare, vedere eseguire la migrazione al servizio Azure Kubernetes.

Per altre informazioni, vedere l'annuncio di deprecazione del servizio Azure Container su Azure.com.

L'interfaccia della riga di comando di Azure viene usata per creare e gestire le risorse di Azure dalla riga di comando o negli script. Questa guida illustra in modo dettagliato come usare l'interfaccia della riga di comando di Azure per distribuire un cluster Kubernetes nel servizio Azure Container. Dopo aver distribuito il cluster, è possibile connettersi a esso con lo strumento da riga di comando kubectl di Kubernetes e distribuire il primo contenitore Windows.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Usare Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo superiore destro di un blocco di codice. La selezione di Prova non comporta la copia automatica del codice in Cloud Shell. Esempio di Prova per Azure Cloud Shell
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. Avviare Cloud Shell in una nuova finestra
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Pulsante Cloud Shell nel portale di Azure

Per eseguire il codice di questo articolo in Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice per copiare il codice.

  3. Incollare il codice nella sessione di Cloud Shell premendo CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in macOS.

  4. Premere INVIO per eseguire il codice.

Se si sceglie di installare e usare l'interfaccia della riga di comando in locale, per questa guida introduttiva è necessario eseguire la versione 2.0.4 o successiva dell'interfaccia della riga di comando di Azure. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Nota

Il supporto per i contenitori Windows in Kubernetes nel servizio Azure Container è disponibile in versione di anteprima.

Creare un gruppo di risorse

Creare un gruppo di risorse con il comando az group create. Un gruppo di risorse di Azure è un gruppo logico in cui le risorse di Azure vengono distribuite e gestite.

L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.

az group create --name myResourceGroup --location eastus

Creare un cluster Kubernetes

Creare un cluster Kubernetes nel servizio Azure Container con il comando az acs create.

L'esempio seguente crea un cluster denominato myK8sCluster con un nodo master Linux e due nodi agente Windows. Questo esempio crea le chiavi SSH necessarie per la connessione al nodo master Linux. L'esempio usa azureuser come nome utente amministrativo e myPassword12 come password nei nodi Windows. Aggiornare i valori in modo che siano appropriati all'ambiente.

az acs create --orchestrator-type=kubernetes \
    --resource-group myResourceGroup \
    --name=myK8sCluster \
    --agent-count=2 \
    --generate-ssh-keys \
    --windows --admin-username azureuser \
    --admin-password myPassword12

Dopo alcuni minuti, il comando viene completato e mostra le informazioni sulla distribuzione.

Installare kubectl

Per connettersi al cluster Kubernetes dal computer client, usare kubectl, il client da riga di comando di Kubernetes.

Se si usa Azure CloudShell, kubectl è già installato. Se lo si vuole installare in locale, è possibile usare il comando az acs kubernetes install-cli.

L'interfaccia della riga di comando di Azure seguente installa kubectl nel sistema. In Windows eseguire questo comando come amministratore.

az acs kubernetes install-cli

Connettersi con kubectl

Per configurare kubectl per connettersi al cluster Kubernetes, eseguire il comando az acs kubernetes get-credentials. L'esempio seguente scarica la configurazione del cluster per il cluster Kubernetes.

az acs kubernetes get-credentials --resource-group=myResourceGroup --name=myK8sCluster

Per verificare la connessione al cluster dal computer, provare a eseguire:

kubectl get nodes

kubectl elenca i nodi master e agente.

NAME                    STATUS                     AGE       VERSION
k8s-agent-98dc3136-0    Ready                      5m        v1.5.3
k8s-agent-98dc3136-1    Ready                      5m        v1.5.3
k8s-master-98dc3136-0   Ready,SchedulingDisabled   5m        v1.5.3

Distribuire un contenitore IIS Windows

È possibile eseguire un contenitore Docker all'interno di un pod Kubernetes, che contiene uno o più contenitori.

Questo esempio di base usa un file JSON per specificare un contenitore Microsoft Internet Information Server (IIS) e quindi crea il pod usando il comando kubctl apply.

Creare un file locale denominato iis.json e copiare il testo seguente. Questo file indica a Kubernetes di eseguire IIS su Windows Server 2016 Nano Server usando un'immagine di contenitore pubblica dall'hub Docker. Il contenitore usa la porta 80, ma inizialmente è accessibile solo all'interno della rete di cluster.

{
 "apiVersion": "v1",
 "kind": "Pod",
 "metadata": {
   "name": "iis",
   "labels": {
     "name": "iis"
   }
 },
 "spec": {
   "containers": [
     {
       "name": "iis",
       "image": "microsoft/iis:nanoserver",
       "ports": [
         {
         "containerPort": 80
         }
       ]
     }
   ],
   "nodeSelector": {
    "beta.kubernetes.io/os": "windows"
    }
  }
}

Per avviare il pod, digitare:

kubectl apply -f iis.json

Per tenere traccia della distribuzione, digitare:

kubectl get pods

Durante la distribuzione del pod, lo stato è ContainerCreating. Per il passaggio del contenitore allo stato Running, possono essere necessari alcuni minuti.

NAME     READY        STATUS        RESTARTS    AGE
iis      1/1          Running       0           32s

Visualizzare la pagina iniziale di IIS

Per esporre il pod con un indirizzo IP pubblico, digitare il comando seguente:

kubectl expose pods iis --port=80 --type=LoadBalancer

Con questo comando, Kubernetes crea un servizio e una regola di Azure Load Balancer con un indirizzo IP pubblico per il servizio.

Eseguire questo comando per visualizzare lo stato del servizio.

kubectl get svc

L'indirizzo IP viene inizialmente visualizzato come pending. Dopo alcuni minuti, viene impostato l'indirizzo IP esterno del pod iis:

NAME         CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE       
kubernetes   10.0.0.1       <none>          443/TCP        21h       
iis          10.0.111.25    13.64.158.233   80/TCP         22m

È possibile usare il Web browser che si preferisce per vedere la pagina iniziale di IIS predefinita all'indirizzo IP esterno:

Immagine del passaggio a IIS

Eliminare il cluster

Quando il cluster non è più necessario, è possibile usare il comando az group delete per rimuovere il gruppo di risorse, il servizio contenitore e tutte le risorse correlate.

az group delete --name myResourceGroup

Passaggi successivi

In questa guida introduttiva è stato distribuito un cluster Kubernetes, è stata eseguita la connessione con kubectl ed è stato distribuito un pod con un contenitore IIS. Per altre informazioni sul servizio Azure Container, continuare con l'esercitazione su Kubernetes.