Delen via


Windows Server-containers maken

Van toepassing op: Azure Stack HCI, versie 23H2

In dit artikel wordt beschreven hoe u Azure CLI gebruikt om een knooppuntgroep te implementeren in een bestaand AKS-cluster waarop Windows Server-containers worden uitgevoerd. Ook wordt beschreven hoe u een ASP.NET voorbeeldtoepassing in een Windows Server-container implementeert in het cluster.

Vereisten

Maak een AKS-cluster volgens de instructies in AKS-clusters maken.

Een knooppuntgroep toevoegen

Standaard wordt een Kubernetes-cluster gemaakt met een knooppuntgroep waarop Linux-containers kunnen worden uitgevoerd. U moet een andere knooppuntgroep toevoegen waarmee Windows Server-containers naast de Linux-knooppuntgroep kunnen worden uitgevoerd.

Voeg een knooppuntgroep toe met Windows-containerhosts met behulp van de az aksarc nodepool add opdracht met de parameter --os-type Windows. Als de SKU van het besturingssysteem niet is opgegeven, wordt de knooppuntgroep ingesteld op het standaardbesturingssysteem op basis van de Kubernetes-versie van het cluster. Windows Server 2022 is het standaardbesturingssysteem voor Kubernetes-versies 1.25.0 en hoger. Windows Server 2019 is het standaard besturingssysteem voor eerdere versies.

  • Als u Windows Server 2019 wilt gebruiken, geeft u de volgende parameters op:
    • os-type ingesteld op Windows.
    • os-sku ingesteld op Windows2019.
  • Als u Windows Server 2022 wilt gebruiken, geeft u de volgende parameters op:
    • os-type ingesteld op Windows.
    • os-sku ingesteld op Windows2022 (optioneel).

Met de volgende opdracht maakt u een nieuwe knooppuntgroep met de naam $mynodepool en voegt u deze toe aan $myAKSCluster één Windows Server 2022-knooppunt:

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

Verbinding maken met het AKS-cluster

U kunt nu verbinding maken met uw Kubernetes-cluster door de az connectedk8s proxy opdracht vanaf uw lokale computer uit te voeren. Zorg ervoor dat u zich aanmeldt bij Azure voordat u deze opdracht uitvoert. Als u meerdere Azure-abonnementen hebt, selecteert u de juiste abonnements-id met behulp van de opdracht az account set .

Met deze opdracht downloadt u de kubeconfig van uw Kubernetes-cluster naar uw lokale computer en opent u een proxyverbindingskanaal naar uw on-premises Kubernetes-cluster. Het kanaal is geopend zolang deze opdracht wordt uitgevoerd. Laat deze opdracht worden uitgevoerd zolang u toegang wilt tot uw cluster. Als er een time-out optreedt voor de opdracht, sluit u het CLI-venster, opent u een nieuw venster en voert u de opdracht opnieuw uit.

U moet inzendermachtigingen hebben voor de resourcegroep die als host fungeert voor het AKS-cluster om de volgende opdracht uit te voeren:

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

Verwachte uitvoer:

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.

Houd deze sessie actief en maak verbinding met uw Kubernetes-cluster vanaf een andere terminal-/opdrachtprompt. Controleer of u verbinding kunt maken met uw Kubernetes-cluster door de opdracht kubectl get uit te voeren. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd:

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

In de volgende voorbeelduitvoer ziet u het knooppunt dat in de vorige stappen is gemaakt. Zorg ervoor dat de status van het knooppunt gereed is:

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

De toepassing implementeren

Een Kubernetes-manifestbestand definieert de gewenste status van een cluster, zoals welke containerinstallatiekopieën moeten worden uitgevoerd.

U kunt een YAML-manifest gebruiken 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 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. Voor AKS moeten Windows Server-containers zijn gebaseerd op installatiekopieën van Windows Server 2019 of hoger. Het Kubernetes-manifestbestand moet ook een knooppuntkiezer definiëren om ervoor te zorgen dat de pods van uw ASP.NET voorbeeldtoepassing worden gepland op een knooppunt waarop Windows Server-containers kunnen worden uitgevoerd.

  1. Maak een bestand met de naam sample.yaml en kopieer dit in 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:
            "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
    

    Zie Implementaties en YAML-manifestmanifesten voor een uitsplitsing van YAML-manifestbestanden.

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

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

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 inrichten van de service langer duren dan een paar minuten. Wacht maximaal 10 minuten voor inrichting.

  1. Controleer de voortgang met behulp van de opdracht kubectl get service met het --watch argument.

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

    In eerste instantie wordt in de uitvoer het EXTERNE 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
    

    Wanneer het EXTERNE IP-adres in behandeling is voor een IP-adres, gebruikt u Ctrl-C om het kubectl-controleproces te stoppen. In de volgende voorbeelduitvoer ziet u een geldig openbaar IP-adres dat aan de service is toegewezen:

    sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
    
  2. Bekijk de voorbeeld-app in actie door een webbrowser te openen naar het externe IP-adres en de poort van de voorbeeldservice .

    Schermopname van ASP.NET voorbeeldtoepassing.

    Als u een verbindingstime-out ontvangt bij het laden van de pagina, moet u controleren of de voorbeeld-app gereed is met behulp van de kubectl get pods --watch opdracht. Soms wordt de Windows-container niet gestart op het moment dat uw externe IP-adres beschikbaar is.

Knooppuntgroep verwijderen

Verwijder de knooppuntgroep met behulp van de az akshybrid nodepool delete opdracht:

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

Volgende stappen

Overzicht van AKS ingeschakeld door Arc