Distribuire applicazioni Windows in servizio Azure Kubernetes in Azure Stack HCI e Windows Server

Si applica a: Azure Stack HCI e Windows Server

In questa esercitazione si apprenderà come distribuire un'applicazione di esempio ASP.NET in un contenitore di Windows Server nel cluster Kubernetes e quindi vedere come testare e ridimensionare l'applicazione. Si apprenderà anche come aggiungere un nodo Windows a un dominio di Active Directory.

Questa esercitazione presuppone una conoscenza di base dei concetti di Kubernetes. Per altre informazioni, vedere Concetti di base di Kubernetes per il servizio Azure Stack HCI e Windows Server.

Prima di iniziare

Assicurarsi di avere soddisfatto i requisiti seguenti:

Inoltre:

  • Eseguire i comandi in questo documento in una finestra amministrativa di PowerShell.
  • Assicurarsi che i carichi di lavoro specifici del sistema operativo vengano terreni nell'host contenitore appropriato. Se si dispone di un cluster Kubernetes e Linux misto, è possibile usare selettori di nodi o taints e tolerazioni. Per altre informazioni, vedere uso di selettore di nodi e taints e tolerations.

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 viene usato 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. Il servizio Azure Kubernetes in Azure Stack HCI e Windows Server richiede che i contenitori di Windows Server siano basati su immagini di Windows Server 2019.

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.yaml e 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:
        "beta.kubernetes.io/os": windows
      containers:
      - name: sample
        image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
        resources:
          limits:
            cpu: 1
            memory: 800M
          requests:
            cpu: .1
            memory: 300M
        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

Distribuire l'applicazione usando il kubectl apply comando 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

Test dell'applicazione

Durante l'esecuzione dell'applicazione, un servizio Kubernetes espone il front-end dell'applicazione a Internet. Il processo potrebbe richiedere alcuni minuti. Occasionalmente, il servizio può richiedere più di pochi minuti per eseguire il provisioning. In questi casi, attendere al massimo 10 minuti.

Per monitorare lo stato di avanzamento, usare il kubectl get service comando con l'argomento --watch .

kubectl get service sample --watch

EXTERNAL-IP per il servizio di esempio viene inizialmente visualizzato come pending.

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 controllo kubectl. L'output di esempio seguente mostra un indirizzo IP pubblico valido assegnato al servizio:

NAME    TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
sample  LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Per vedere in azione l'app di esempio, aprire un Web browser all'indirizzo IP esterno del servizio.

Immagine del passaggio all'applicazione ASP.NET di esempio

Se si riceve un timeout di connessione quando si tenta di caricare la pagina, verificare se l'app di esempio è pronta con kubectl get pods --watch il comando . A volte, l'indirizzo IP esterno è disponibile prima dell'avvio del contenitore windows.

Ridimensionare i pod dell'applicazione

È stata creata una singola replica del front-end dell'applicazione. Per visualizzare il numero e lo stato dei pod nel cluster, usare il kubectl get comando come indicato di seguito:

kubectl get pods -n default

Per modificare il numero di pod nella distribuzione di esempio , usare il kubectl scale comando . L'esempio seguente aumenta il numero di pod front-end a 3:

kubectl scale --replicas=3 deployment/sample

Eseguire kubectl get pods di nuovo per verificare che siano stati creati altri pod. Dopo circa un minuto i pod aggiuntivi sono disponibili nel cluster:

kubectl get pods -n default

Passaggi successivi