Distribuire cluster Kubernetes per contenitori Windows

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 contenitore di Azure. 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.

Avviare Azure Cloud Shell

Azure Cloud Shell è una shell Bash gratuita che può essere eseguita direttamente nel portale di Azure. Include l'interfaccia della riga di comando di Azure preinstallata e configurata per l'uso con l'account. Fare clic sul pulsante Cloud Shell nel menu nel riquadro in alto a destra nel portale di Azure.

Cloud Shell

Il pulsante avvia una shell interattiva che è possibile usare per eseguire i passaggi di questo argomento:

Screenshot che mostra la finestra di Cloud Shell nel portale

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 2.0.

Nota

Il supporto per i contenitori Windows in Kubernetes nel servizio contenitore di Azure è 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 contenitore di Azure 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 contenitore di Azure, continuare con l'esercitazione su Kubernetes.