Windows-toepassingen implementeren

Van toepassing op: AKS in Azure Stack HCI 22H2, AKS op Windows Server

In deze zelfstudie wordt beschreven hoe u een ASP.NET voorbeeldtoepassing in een Windows Server-container implementeert in het AKS-cluster (Azure Kubernetes Service) in AKS dat is ingeschakeld door Arc, en vervolgens uw toepassing test en schaalt. U leert ook hoe u een Windows-knooppunt koppelt aan een Active Directory-domein.

In deze zelfstudie wordt ervan uitgegaan dat u basiskennis hebt van Kubernetes-concepten. Zie Kubernetes core concepts for AKS enabled by Azure Arc (Kernconcepten van Kubernetes voor AKS die worden ingeschakeld door Azure Arc) voor meer informatie.

Voordat u begint

Zorg ervoor dat u aan de volgende vereisten voldoet:

Wanneer u de procedures volgt:

  • Voer de opdrachten uit in een PowerShell-beheervenster.
  • Zorg ervoor dat besturingssysteemspecifieke workloads op de juiste containerhost terechtkomen. Als uw Kubernetes-cluster een combinatie van Linux- en Windows-werkknooppunten heeft, kunt u knooppuntkiezers of taints en toleranties gebruiken. Zie knooppuntkiezers en taints en toleranties gebruiken voor meer informatie.

De toepassing implementeren

Een Kubernetes-manifestbestand definieert een gewenste status voor het cluster, zoals welke containerinstallatiekopieën moeten worden uitgevoerd. In deze procedures wordt een manifest gebruikt om alle objecten te maken die nodig zijn om de ASP.NET voorbeeldtoepassing uit te voeren in een Windows Server-container. Dit manifest bevat een Kubernetes-implementatie voor de ASP.NET voorbeeldtoepassing en een externe Kubernetes-service voor toegang tot de toepassing vanaf internet.

De ASP.NET voorbeeldtoepassing wordt geleverd als onderdeel van de .NET Framework voorbeelden en wordt uitgevoerd in een Windows Server-container. AKS Arc vereist dat Windows Server-containers zijn gebaseerd op installatiekopieën van Windows Server 2019.

Het Kubernetes-manifestbestand moet ook een knooppuntkiezer definiëren om uw cluster te laten weten dat de pod van uw ASP.NET voorbeeldtoepassing moet worden uitgevoerd op een knooppunt waarop Windows Server-containers kunnen worden uitgevoerd.

Creatie een bestand met de naam sample.yamlen kopieer/plak de volgende YAML-definitie:

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

Implementeer de toepassing met behulp van de kubectl apply opdracht en geef de naam van uw YAML-manifest op:

kubectl apply -f sample.yaml

In de volgende voorbeelduitvoer ziet u dat de implementatie en service zijn gemaakt:

deployment.apps/sample created
service/sample created

De toepassing testen

Wanneer de toepassing wordt uitgevoerd, maakt een Kubernetes-service de front-end van de toepassing beschikbaar op internet. Dit proces kan enkele minuten duren. Soms kan het langer dan een paar minuten duren voordat de service is ingericht. In deze gevallen kan het maximaal 10 minuten duren.

Als u de voortgang wilt bewaken, gebruikt u de kubectl get service opdracht met het --watch argument :

kubectl get service sample --watch

In eerste instantie wordt het EXTERNAL-IP-adres voor de voorbeeldservice weergegeven als in behandeling.

NAME    TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
sample  LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

Zodra het EXTERNAL-IP-adres is gewijzigd van in behandeling in een echt openbaar IP-adres, gebruikt u CTRL-C om het controleproces van kubectl te stoppen. In de volgende voorbeelduitvoer ziet u een geldig openbaar IP-adres dat aan de service is toegewezen:

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

Als u de voorbeeld-app in actie wilt zien, opent u een webbrowser naar het externe IP-adres van uw service.

Schermopname van de startpagina voor de ASP.NET voorbeeldtoepassing voor Windows die is geïmplementeerd in een AKS-cluster.

Als er een time-out optreedt voor de verbinding wanneer u de pagina probeert te laden, controleert u of de voorbeeld-app gereed is door de kubectl get pods --watch opdracht uit te voeren. Soms is het externe IP-adres beschikbaar voordat de Windows-container wordt gestart.

Toepassingspods schalen

We hebben één replica van de front-end van de toepassing gemaakt. Als u het aantal en de status van pods in uw cluster wilt zien, gebruikt u de kubectl get opdracht als volgt:

kubectl get pods -n default

Als u het aantal pods in de voorbeeldimplementatie wilt wijzigen, gebruikt u de kubectl scale opdracht . In het volgende voorbeeld wordt het aantal front-endpods verhoogd naar 3:

kubectl scale --replicas=3 deployment/sample

Voer opnieuw uit kubectl get pods om te controleren of de pods zijn gemaakt. Na ongeveer een minuut zijn de extra pods beschikbaar in uw cluster:

kubectl get pods -n default

Volgende stappen