Skapa Windows Server-containrar

Gäller för: Azure Stack HCI, version 23H2

I den här artikeln använder du Azure CLI för att distribuera en nodpool till ett befintligt AKS-kluster som kör Windows Server-containrar. Du distribuerar också ett ASP.NET exempelprogram i en Windows Server-container till klustret.

Förutsättningar

Skapa ett AKS-kluster enligt anvisningarna i Skapa AKS-kluster.

Lägga till en nodpool

Som standard skapas ett Kubernetes-kluster med en nodpool som kan köra Linux-containrar. Du måste lägga till ytterligare en nodpool som kan köra Windows Server-containrar tillsammans med Linux-nodpoolen.

Lägg till en nodpool med Windows-containervärdar med az aksarc nodepool add kommandot med parametern --os-type Windows. Om operativsystemets SKU inte har angetts anges nodepoolen till standardoperativsystemet baserat på Kubernetes-versionen av klustret. Windows Server 2022 är standardoperativsystemet för Kubernetes version 1.25.0 och senare. Windows Server 2019 är standardoperativsystemet för tidigare versioner.

  • Om du vill använda Windows Server 2019 anger du följande parametrar:
    • os-type inställd på Windows.
    • os-sku inställd på Windows2019.
  • Om du vill använda Windows Server 2022 anger du följande parametrar:
    • os-type inställd på Windows.
    • os-sku inställd på Windows2022 (valfritt).

Följande kommando skapar en ny nodpool med namnet $mynodepool och lägger till $myAKSCluster den i med en Windows 2019-nod.

az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2019

Ansluta till AKS-klustret

Nu kan du ansluta till kubernetes-klustret genom att az connectedk8s proxy köra kommandot från den lokala datorn. Se till att du loggar in på Azure innan du kör det här kommandot. Om du har flera Azure-prenumerationer väljer du lämpligt prenumerations-ID med kommandot az account set .

Det här kommandot laddar ned kubeconfig för kubernetes-klustret till den lokala datorn och öppnar en proxyanslutningskanal till ditt lokala Kubernetes-kluster. Kanalen är öppen så länge det här kommandot körs. Låt det här kommandot köras så länge du vill komma åt klustret. Om kommandot överskrider tidsgränsen stänger du CLI-fönstret, öppnar ett nytt och kör sedan kommandot igen.

Du måste ha deltagarbehörighet för den resursgrupp som är värd för AKS-klustret för att kunna köra följande kommando:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

Förväntad utdata:

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using kubeconfig at .\aks-arc-kube-config
Press Ctrl+C to close proxy.

Håll den här sessionen igång och anslut till ditt Kubernetes-kluster från en annan terminal/kommandotolk. Kontrollera att du kan ansluta till kubernetes-klustret genom att köra kommandot kubectl get. Det här kommandot returnerar en lista över klusternoderna:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

I följande utdataexempel visas noden som skapades i föregående steg. Kontrollera att nodstatusen är Klar:

NAME              STATUS   ROLES           AGE     VERSION
moc-lesdc78871d   Ready    control-plane   6d8h    v1.26.3
moc-lupeeyd0f8c   Ready    <none>          6d8h    v1.26.3
moc-ww2c8d5ranw   Ready    <none>          7m18s   v1.26.3

Distribuera programmet

En Kubernetes-manifestfil definierar ett klusters önskade tillstånd, till exempel vilka containeravbildningar som ska köras.

Du kan använda ett YAML-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 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 kräver att Windows Server-containrar baseras på avbildningar av Windows Server 2019 eller senare. Kubernetes-manifestfilen måste också definiera en nodväljare för att säkerställa att ASP.NET exempelprogrammets poddar schemaläggs på en nod som kan köra Windows Server-containrar.

  1. Skapa en fil med namnet sample.yaml och kopiera i 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:
            "kubernetes.io/os": windows
          containers:
          - name: sample
            image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
            resources:
              limits:
                cpu: 1
                memory: 800M
            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
    

    En uppdelning av YAML-manifestfiler finns i Distributioner och YAML-manifest.

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

    kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
    

Följande exempelutdata visar distributionen och tjänsten som 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 för etablering.

  1. Övervaka förloppet med hjälp av kommandot kubectl get service med --watch argumentet .

    kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
    

    I början visar utdata EXTERNAL-IP för exempeltjä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 IP-adress använder du CTRL-C för att stoppa kubectl-watch processen. Följande exempelutdata visar en giltig offentlig IP-adress som har tilldelats tjänsten:

    sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
    
  2. Se exempelappen i praktiken genom att öppna en webbläsare till exempeltjänstens externa IP-adress och port.

    Skärmbild som visar ASP.NET exempelprogram.

    Om du får en tidsgräns för anslutningen när du försöker läsa in sidan bör du kontrollera att exempelappen är klar med kubectl get pods --watch kommandot . Ibland startas inte Windows-containern när din externa IP-adress är tillgänglig.

Ta bort nodpool

Ta bort nodpoolen az akshybrid nodepool delete med kommandot .

az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait

Nästa steg

I den här artikeln distribuerade du en Windows-nodpool till ett befintligt AKS-kluster och distribuerade ett ASP.NET exempelprogram i en Windows Server-container till det.