Erstellen von Windows Server-Containern

Gilt für: Azure Stack HCI, Version 23H2

In diesem Artikel wird beschrieben, wie Sie Azure CLI verwenden, um einen Knotenpool in einem vorhandenen AKS-Cluster bereitzustellen, der Windows Server-Container ausführt. Außerdem wird beschrieben, wie Sie eine ASP.NET Beispielanwendung in einem Windows Server-Container im Cluster bereitstellen.

Voraussetzungen

Erstellen Sie einen AKS-Cluster nach den Anweisungen zum Erstellen von AKS-Clustern.

Hinzufügen eines Knotenpools

Standardmäßig wird ein Kubernetes-Cluster mit einem Knotenpool erstellt, der Linux-Container ausführen kann. Sie müssen einen weiteren Knotenpool hinzufügen, der neben dem Linux-Knotenpool Windows Server-Container ausführen kann.

Fügen Sie einen Knotenpool mit Windows-Containerhosts mithilfe des az aksarc nodepool add Befehls mit dem Parameter --os-type Windowshinzu. Wenn die SKU des Betriebssystems nicht angegeben ist, wird der Knotenpool auf das Standardbetriebssystem basierend auf der Kubernetes-Version des Clusters festgelegt. Das Standardbetriebssystem für Kubernetes Versionen 1.25.0 und höher ist Windows Server 2022. Für frühere Versionen ist das Standardbetriebssystem Windows Server 2019.

  • Um Windows Server 2019 zu verwenden, geben Sie die folgenden Parameter an:
    • Legen Sie os-type auf Windows fest.
    • Legen Sie os-sku auf Windows2019 fest.
  • Um Windows Server 2022 zu verwenden, geben Sie die folgenden Parameter an:
    • Legen Sie os-type auf Windows fest.
    • os-skuWindows2022 auf (optional) festgelegt.

Der folgende Befehl erstellt einen neuen Knotenpool namens $mynodepool und fügt ihn mit einem Windows Server 2022-Knoten hinzu $myAKSCluster :

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

Herstellen einer Verbindung mit dem AKS-Cluster

Jetzt können Sie eine Verbindung mit Ihrem Kubernetes-Cluster herstellen, indem Sie den az connectedk8s proxy Befehl von Ihrem lokalen Computer aus ausführen. Stellen Sie sicher, dass Sie sich bei Azure anmelden, bevor Sie diesen Befehl ausführen. Wenn Sie über mehrere Azure-Abonnements verfügen, wählen Sie mithilfe des Befehls az account set das entsprechende Abonnement ID aus.

Dieser Befehl lädt die Kubeconfig Ihres Kubernetes-Clusters auf Ihren lokalen Computer herunter und öffnet einen Proxyverbindungskanal zu Ihrem lokalen Kubernetes-Cluster. Der Kanal ist geöffnet, solange dieser Befehl ausgeführt wird. Führen Sie den Befehl so lange aus, wie Sie auf Ihren Cluster zugreifen möchten. Wenn der Befehl ausgeht, schließen Sie das CLI-Fenster, öffnen Sie eine neue, und führen Sie dann den Befehl erneut aus.

Sie müssen über Die Berechtigung "Mitwirkender" für die Ressourcengruppe verfügen, die den AKS-Cluster hosten, um den folgenden Befehl erfolgreich auszuführen:

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

Erwartete Ausgabe:

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.

Führen Sie diese Sitzung aus, und stellen Sie eine Verbindung mit Ihrem Kubernetes-Cluster über eine andere Terminal-/Eingabeaufforderung her. Stellen Sie sicher, dass Sie eine Verbindung mit Ihrem Kubernetes-Cluster herstellen können, indem Sie den Befehl "kubectl get" ausführen. Dieser Befehl gibt eine Liste der Clusterknoten zurück:

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

Die folgende Beispielausgabe zeigt den Knoten, der in den vorherigen Schritten erstellt wurde. Stellen Sie sicher, dass der Knotenstatus Bereit lautet:

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

Bereitstellen der Anwendung

Eine Kubernetes-Manifestdatei definiert den gewünschten Zustand (Desired State) eines Clusters – also beispielsweise, welche Containerimages ausgeführt werden sollen.

Sie können ein YAML-Manifest verwenden, um alle Objekte zu erstellen, die zum Ausführen der ASP.NET Beispielanwendung in einem Windows Server-Container erforderlich sind. Dieses Manifest enthält eine Kubernetes-Bereitstellung für die ASP.NET Beispielanwendung und einen Kubernetes-Dienst für den Zugriff auf die Anwendung über das Internet.

Die ASP.NET Beispielanwendung wird als Teil der .NET Framework-Beispiele bereitgestellt und in einem Windows Server-Container ausgeführt. AKS verlangt, dass Windows Server-Container auf Images von Windows Server 2019 oder höher basieren. Die Kubernetes-Manifestdatei muss auch eine Knotenauswahl definieren, um sicherzustellen, dass die Pods ihrer ASP.NET Beispielanwendung auf einem Knoten geplant sind, der Windows Server-Container ausführen kann.

  1. Erstellen Sie eine Datei mit dem Namen "sample.yaml ", und kopieren Sie sie in der folgenden 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
    

    Eine Aufschlüsselung der YAML-Manifestdateien finden Sie unter Bereitstellungen und YAML-Manifeste.

  2. Stellen Sie die Anwendung über den Befehl kubectl apply bereit, und geben Sie den Namen Ihres YAML-Manifests an:

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

Die folgende Beispielausgabe zeigt, dass die Bereitstellung und der Dienst erfolgreich erstellt wurden:

deployment.apps/sample created
service/sample created

Testen der Anwendung

Wenn die Anwendung ausgeführt wird, macht ein Kubernetes-Dienst das Anwendungs-Front-End im Internet verfügbar. Dieser Vorgang kann einige Minuten dauern. Gelegentlich kann die Bereitstellung des Diensts länger als ein paar Minuten dauern. Geben Sie der Bereitstellung bis zu 10 Minuten Zeit.

  1. Verwenden Sie zum Überwachen des Fortschritts den Befehl kubectl get service mit dem Argument --watch:

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

    Zunächst zeigt die Ausgabe die EXTERNAL-IP für den Beispieldienst als ausstehend an:

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

    Wenn sich die EXTERNE-IP-Adresse von "Ausstehend " in eine IP-Adresse ändert, verwenden Sie STRG-C, um den Kubectl-Überwachungsvorgang zu beenden. Die folgende Beispielausgabe zeigt eine gültige öffentliche IP-Adresse, die dem Dienst zugewiesen ist:

    sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
    
  2. Sehen Sie sich die Beispiel-App in Aktion an, indem Sie einen Webbrowser für die externe IP-Adresse und den Port des Beispieldiensts öffnen.

    Screenshot ASP.NET Beispielanwendung.

    Wenn Beim Laden der Seite ein Verbindungstimeout angezeigt wird, sollten Sie überprüfen, ob die Beispiel-App mit dem kubectl get pods --watch Befehl bereit ist. Manchmal ist der Windows-Container noch nicht gestartet, wenn Ihre externe IP-Adresse verfügbar ist.

Knotenpool löschen

Löschen Sie den Knotenpool mithilfe des az akshybrid nodepool delete Befehls:

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

Nächste Schritte

AKS aktiviert durch Arc Übersicht