Distribuera Windows-program

Gäller för: AKS på Azure Stack HCI 22H2, AKS på Windows Server

Den här självstudien beskriver hur du distribuerar ett ASP.NET exempelprogram i en Windows Server-container till aks-klustret (Azure Kubernetes Service) i AKS som aktiveras av Arc och sedan testar och skalar ditt program. Du lär dig också hur du ansluter en Windows-nod till en Active Directory-domän.

Den här självstudien förutsätter en grundläggande förståelse av Kubernetes-begrepp. Mer information finns i Kubernetes kärnbegrepp för AKS-hybrid.

Innan du börjar

Kontrollera att du uppfyller följande krav:

När du följer procedurerna:

  • Kör kommandona i ett administrativt PowerShell-fönster.
  • Se till att OS-specifika arbetsbelastningar hamnar på lämplig containervärd. Om Kubernetes-klustret har en blandning av Linux- och Windows-arbetsnoder kan du använda nodväljare eller taints och toleranser. Mer information finns i använda nodväljare och taints och toleranser.

Distribuera programmet

En Kubernetes-manifestfil definierar ett önskat tillstånd för klustret, till exempel vilka containeravbildningar som ska köras. I dessa procedurer används ett manifest för att skapa alla objekt som behövs för att köra ASP.NET exempelprogrammet i en Windows Server-container. Det här manifestet innehåller en Kubernetes-distribution för ASP.NET-exempelprogrammet och en extern Kubernetes-tjänst för åtkomst till programmet från Internet.

Det ASP.NET exempelprogrammet tillhandahålls som en del av .NET Framework-exempel och körs i en Windows Server-container. AKS Arc kräver att Windows Server-containrar baseras på avbildningar av Windows Server 2019.

Kubernetes-manifestfilen måste också definiera en nodväljare för att instruera klustret att köra ASP.NET-exempelprogrammets podd på en nod som kan köra Windows Server-containrar.

Skapa en fil med namnet sample.yamloch kopiera/klistra in följande YAML-definition:

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

Distribuera programmet med kubectl apply kommandot och ange namnet på ditt YAML-manifest:

kubectl apply -f sample.yaml

Följande exempelutdata visar att distributionen och tjänsten har skapats:

deployment.apps/sample created
service/sample created

Testa programmet

När programmet körs så exponerar en Kubernetes-tjänst programmets klientdel mot Internet. Den här processen kan ta ett par minuter att slutföra. Ibland kan det ta längre tid än några minuter att etablera tjänsten. Tillåt upp till 10 minuter i dessa fall.

Om du vill övervaka förloppet använder du kubectl get service kommandot med --watch argumentet :

kubectl get service sample --watch

Inledningsvis visas EXTERN IP förexempeltjänsten som väntande.

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

När EXTERNAL-IP-adressen ändras från väntande till en faktisk offentlig IP-adress använder du CTRL-C för att stoppa kubectl-övervakningsprocessen. Följande exempelutdata visar en giltig offentlig IP-adress som har tilldelats tjänsten:

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

Om du vill se exempelappen i praktiken öppnar du en webbläsare till tjänstens externa IP-adress.

Skärmbild av startsidan för ASP.NET exempelprogram för Windows som distribuerats i ett AKS-kluster.

Om anslutningen överskrider tidsgränsen när du försöker läsa in sidan kontrollerar du om exempelappen är klar genom att köra kubectl get pods --watch kommandot . Ibland är den externa IP-adressen tillgänglig innan Windows-containern startar.

Skala programpoddar

Vi skapade en enda replik av programmets klientdel. Om du vill se antalet och tillståndet för poddar i klustret använder du kubectl get kommandot på följande sätt:

kubectl get pods -n default

Om du vill ändra antalet poddar i exempeldistributionen använder du kubectl scale kommandot . I följande exempel ökar antalet klientdelspoddar till 3:

kubectl scale --replicas=3 deployment/sample

Kör kubectl get pods igen för att kontrollera att poddarna har skapats. Efter någon minut finns de nya poddarna i klustret:

kubectl get pods -n default

Nästa steg