Distribuire applicazioni Windows

Si applica a: Servizio Azure Kubernetes in Azure Stack HCI 22H2, servizio Azure Kubernetes in Windows Server

Questa esercitazione descrive come distribuire un'applicazione di esempio ASP.NET in un contenitore di Windows Server nel cluster servizio Azure Kubernetes (servizio Azure Kubernetes) nel servizio Azure Kubernetes abilitato da Arc, quindi 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 Kubernetes abilitato da Azure Arc.

Operazioni preliminari

Assicurarsi di soddisfare i requisiti seguenti:

  • Un cluster servizio Azure Kubernetes con almeno un nodo di lavoro Windows in esecuzione.
  • Un file kubeconfig per accedere al cluster.
  • Viene installato il modulo Azure KubernetesHci di PowerShell.

Quando si seguono le procedure:

  • Eseguire i comandi in una finestra di amministrazione di PowerShell.
  • Assicurarsi che i carichi di lavoro specifici del sistema operativo si adattino all'host contenitore appropriato. Se il cluster Kubernetes ha una combinazione di nodi di lavoro Linux e Windows, è possibile usare selettori di nodo o taints e tolleranze. Per altre informazioni, vedere Uso di selettori di nodo e taints e tolleranze.

Distribuire l'applicazione

Un file manifesto Kubernetes definisce uno stato desiderato per il cluster, ad esempio le immagini del contenitore da eseguire. In queste procedure 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 come parte degli esempi di .NET Framework e viene eseguita in un contenitore di Windows Server. Azure Kubernetes Arc richiede che i contenitori di Windows Server siano basati su immagini di Windows Server 2019.

Il file manifesto kubernetes deve anche definire un selettore di nodo per indicare al cluster di eseguire il pod dell'applicazione di esempio ASP.NET in un nodo in cui è possibile eseguire contenitori di Windows Server.

Creare un file denominato sample.yamle copiare/incollare la 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 che la distribuzione e il servizio sono stati 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. 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

Inizialmente, l'indirizzo EXTERNAL-IP per il servizio di esempio viene visualizzato 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 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.

Screenshot della home page per l'applicazione di esempio ASP.NET per Windows distribuita in un cluster del servizio Azure Kubernetes.

Se si verifica il timeout della connessione quando si tenta di caricare la pagina, verificare se l'app di esempio è pronta eseguendo il kubectl get pods --watch comando . In alcuni casi, l'indirizzo IP esterno è disponibile prima dell'avvio del contenitore di 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 i pod siano stati creati. Dopo circa un minuto i pod aggiuntivi sono disponibili nel cluster:

kubectl get pods -n default

Passaggi successivi