Skapa Windows Server-containrar

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

Den här artikeln beskriver hur du använder Azure CLI för att distribuera en nodpool till ett befintligt AKS-kluster som kör Windows Server-containrar. Den beskriver också hur du distribuerar 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 en annan nodpool som kan köra Windows Server-containrar tillsammans med Linux-nodpoolen.

Lägg till en nodpool med Windows-containervärdar med kommandot az aksarc nodepool add med parametern --os-type Windows. Om operativsystemets SKU inte har angetts är nodpoolen inställd på 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ällt på Windows.
    • os-sku inställt på Windows2019.
  • Om du vill använda Windows Server 2022 anger du följande parametrar:
    • os-type inställt 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 Server 2022-nod:

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

Ansluta till AKS-klustret

Nu kan du ansluta till kubernetes-klustret genom att az connectedk8s proxy köra kommandot från den lokala datorn. Kontrollera 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 ditt Kubernetes-kluster till din lokala dator och öppnar en proxyanslutningskanal till ditt lokala Kubernetes-kluster. Kanalen är öppen så länge som 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 resursgruppen 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

Följande exempelutdata visar 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 exempelprogram 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-exemplen 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 dina ASP.NET exempelprograms poddar är schemalagda 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 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 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
    

    Initialt 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 den externa IP-adressen och porten för exempeltjänsten .

    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 kommandot kubectl get pods --watch . Ibland startas inte Windows-containern när den externa IP-adressen ä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

AKS aktiverat av Arc-översikt