Freigeben über


Bereitstellen eines Windows Server-Containers auf einem Azure Kubernetes Service (AKS)-Cluster mit PowerShell

Azure Kubernetes Service (AKS) ist ein verwalteter Kubernetes-Dienst, mit dem Sie schnell Cluster bereitstellen und verwalten können. In diesem Artikel verwenden Sie Azure PowerShell, um einen AKS-Cluster bereitzustellen, auf dem Windows Server-Container ausgeführt werden. Sie stellen auch eine ASP.NET-Beispielanwendung in einem Windows Server-Container für den Cluster bereit.

Hinweis

Um schnell mit der Bereitstellung eines AKS-Clusters zu beginnen, enthält dieser Artikel Schritte zum Bereitstellen eines Clusters mit Standardeinstellungen nur zu Evaluierungszwecken. Bevor Sie einen produktionsbereiten Cluster bereitstellen, empfehlen wir Ihnen, sich mit unserer Baselinereferenzarchitektur vertraut zu machen, um zu prüfen, inwiefern sie Ihren Geschäftsanforderungen entspricht.

Voraussetzungen

Für diese Schnellstartanleitung werden Grundkenntnisse in Bezug auf die Kubernetes-Konzepte vorausgesetzt. Weitere Informationen finden Sie unter Grundlegende Kubernetes-Konzepte für Azure Kubernetes Service (AKS).

  • Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

  • Um die Benutzerfreundlichkeit zu erleichtern, probieren Sie die PowerShell-Umgebung in Azure Cloud Shell aus. Weitere Informationen finden Sie unter Schnellstart für Azure Cloud Shell.

    Wenn Sie PowerShell lokal verwenden möchten, installieren Sie das Az PowerShell-Modul und stellen Sie mithilfe des Cmdlets Connect-AzAccount eine Verbindung mit Ihrem Azure-Konto her. Stellen Sie sicher, dass Sie die Befehle mit Administratorrechten ausführen. Weitere Informationen finden Sie unter Installieren von Azure PowerShell.

  • Stellen Sie sicher, dass die Identität, die Sie zum Erstellen Ihres Clusters verwenden, über die erforderlichen Mindestberechtigungen verfügt. Weitere Informationen zu Zugriff und Identität für AKS finden Sie unter Zugriffs- und Identitätsoptionen für Azure Kubernetes Service (AKS).

  • Wenn Sie über mehrere Azure-Abonnements verfügen, legen Sie das Abonnement fest, das Sie für den Schnellstart verwenden möchten, indem Sie das Cmdlet Set-AzContext aufrufen. Weitere Informationen finden Sie unter Verwalten von Azure-Abonnementen mit Azure PowerShell.

  • Wenn Sie osSku Windows2025verwenden, müssen Sie die aks-preview Erweiterung installieren und das Vorschaukennzeichen registrieren.

  • Für das Festlegen des OsSKU-Parameters ist PowerShell Az-Modul, Version 9.2.0 oder höher, erforderlich.

Installieren der aks-preview Erweiterung

Von Bedeutung

AKS-Vorschaufunktionen sind auf Selbstbedienungsbasis und freiwillig verfügbar. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:

  1. Installieren Sie die Azure CLI-Speichererweiterung aks-preview mit dem Befehl az extension add.
az extension add --name aks-preview
  1. Führen Sie mit dem Befehl az extension update ein Update auf die neueste Version der Erweiterung aus. Windows Server 2025 erfordert mindestens 18.0.0b40.
az extension update --name aks-preview

Registriere die AksWindows2025Preview-Feature-Flag

  1. Registrieren Sie das Featureflag AksWindows2025Preview mithilfe des Befehls [az feature register][az-feature-register].
az feature register --name AksWindows2025Preview --namespace Microsoft.ContainerService
  1. Überprüfen Sie den Registrierungsstatus mithilfe des Befehls [az feature show][az-feature-show]. Es dauert einige Minuten, bis der Status Registered (Registriert) angezeigt wird.
az feature show --name AksWindows2025Preview --namespace Microsoft.ContainerService
  1. Wenn der Status Registered lautet, aktualisieren Sie die Registrierung des Ressourcenanbieters Microsoft.ContainerService mithilfe des Befehls [az provider register][az-provider-register].

    az provider register --namespace Microsoft.ContainerService
    

Erstellen einer Ressourcengruppe

Eine Azure-Ressourcengruppe ist eine logische Gruppe, in der Azure-Ressourcen bereitgestellt und verwaltet werden. Wenn Sie eine Ressourcengruppe erstellen, müssen Sie einen Speicherort angeben. Hier werden die Metadaten der Ressourcengruppe gespeichert und Ihre Ressourcen in Azure ausgeführt, wenn Sie bei der Ressourcenerstellung keine andere Region angeben.

  • Erstellen Sie eine Ressourcengruppe mit dem Cmdlet New-AzResourceGroup. Im folgenden Beispiel wird eine Ressourcengruppe mit dem Namen myResourceGroup in der Region eastus erstellt.

    New-AzResourceGroup -Name myResourceGroup -Location eastus
    

    Die folgende Beispielausgabe zeigt, dass die Ressourcengruppe erfolgreich erstellt wurde:

    ResourceGroupName : myResourceGroup
    Location          : eastus
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup
    

Erstellen eines AKS-Clusters

In diesem Abschnitt erstellen wir einen AKS-Cluster mit der folgenden Konfiguration:

  • Der Cluster ist mit zwei Knoten konfiguriert, um zu gewährleisten, dass er zuverlässig funktioniert. Ein Knoten ist ein virtueller Azure-Computer (Virtual Machine, VM), der die Kubernetes-Knotenkomponenten und die Containerruntime ausführt.
  • Die Parameter -WindowsProfileAdminUserName und -WindowsProfileAdminUserPassword legen die Administrator-Anmeldeinformationen für alle Windows Server-Knoten im Cluster fest und müssen den Anforderungen an die Komplexität der Windows Server-Kennwörter entsprechen.
  • Der Knotenpool verwendet VirtualMachineScaleSets.

Führen Sie die folgenden Schritte aus, um den AKS-Cluster mit Azure PowerShell zu erstellen:

  1. Erstellen Sie die Administrator-Anmeldeinformationen für Ihre Windows Server-Container mit dem folgenden Befehl. Dieser Befehl fordert Sie auf, einen WindowsProfileAdminUserName und ein WindowsProfileAdminUserPassword einzugeben. Das Kennwort mindestens 14 Zeichen lang sein und den Komplexitätsvoraussetzungen von Windows Server-Kennwörtern entsprechen.

    $AdminCreds = Get-Credential `
        -Message 'Please create the administrator credentials for your Windows Server containers'
    
  2. Erstellen Sie Ihren Cluster mithilfe des Cmdlets New-AzAksCluster und geben Sie die Parameter WindowsProfileAdminUserName und WindowsProfileAdminUserPassword an.

    New-AzAksCluster -ResourceGroupName myResourceGroup `
        -Name myAKSCluster `
        -NodeCount 2 `
        -NetworkPlugin azure `
        -NodeVmSetType VirtualMachineScaleSets `
        -WindowsProfileAdminUserName $AdminCreds.UserName `
        -WindowsProfileAdminUserPassword $secureString `
        -GenerateSshKey
    

    Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster im JSON-Format zurückgegeben. Gelegentlich kann die Bereitstellung des Clusters länger als ein paar Minuten dauern. Geben Sie der Bereitstellung bis zu 10 Minuten Zeit.

    Falls Sie für das Kennwort einen Überprüfungsfehler erhalten und das von Ihnen festgelegte Kennwort die Längen- und Komplexitätsvoraussetzungen erfüllt, versuchen Sie, Ihre Ressourcengruppe in einer anderen Region zu erstellen. Versuchen Sie anschließend, den Cluster mit der neuen Ressourcengruppe zu erstellen.

    Wenn Sie bei der Erstellung des Knotenpools keinen Administratorbenutzernamen und kein Kennwort angeben, wird der Benutzername auf azureuser und das Kennwort auf einen Zufallswert festgelegt. Weitere Informationen finden Sie unter Häufig gestellte Fragen zu Windows Server.

    Der Administratorbenutzername kann nicht geändert werden, aber Sie können mithilfe von az aks update das Administratorkennwort ändern, das Ihr AKS-Cluster für Windows Server-Knoten verwendet. Weitere Informationen finden Sie unter Häufig gestellte Fragen zu Windows Server.

    Um einen AKS-Cluster zu betreiben, der Knotenpools für Windows Server-Container unterstützt, muss Ihr Cluster eine Netzwerkrichtlinie verwenden, die das Azure CNI (advanced) Netzwerk-Plugin nutzt. Der Parameter -NetworkPlugin azure dient zum Angeben von Azure CNI.

Hinzufügen eines Knotenpools

Standardmäßig wird ein AKS-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.

Um einen Windows-Node-Pool zu erstellen, müssen Sie einen unterstützten OsType und OsSku angeben. Verwenden Sie die Informationen in der folgenden Tabelle, um zu bestimmen, welche für Ihren Cluster geeignet ist:

OsType OsSku Standard Unterstützte K8s-Versionen Einzelheiten
windows Windows2025 Befindet sich aktuell in der Vorschauversion. Nicht Standard. 1,32+ Aktualisierte Standardwerte: Containerd 2.0, Generation 2-Image wird standardmäßig verwendet.
windows Windows2022 Standardeinstellung in K8s 1.25-1.35 In K8s 1.36+ nicht verfügbar Wird im März 2027 außer Betrieb genommen. Aktualisierte Standardwerte: FIPS ist standardmäßig aktiviert.
windows Windows2019 Standard in K8s Version 1.24 und darunter In K8s 1.33+ nicht verfügbar Geht im März 2026 in den Ruhestand.

Windows Server 2022 ist das Standardbetriebssystem für Kubernetes-Versionen 1.25-1.35. Für frühere Versionen ist das Standardbetriebssystem Windows Server 2019. Wenn Sie keine bestimmte Betriebssystem-SKU angeben, erstellt Azure den neuen Knotenpool mit der Standard-SKU für die vom Cluster verwendete Kubernetes-Version.

Hinweis

  • Windows Server 2019 wird am 1. März 2026 eingestellt. Nach diesem Datum produziert AKS keine neuen Knotenimages mehr oder stellt Sicherheitspatches bereit. Nach diesem Datum können Sie keine neuen Knotenpools mit Windows Server 2019 in jeder Kubernetes-Version erstellen. Alle vorhandenen Knotenpools mit Windows Server 2019 werden nicht unterstützt. Windows Server 2019 wird in Kubernetes, Version 1.33 und höher, nicht unterstützt. Ab dem 1. April 2027 entfernt AKS alle vorhandenen Knotenimages für Windows Server 2019, was bedeutet, dass Skalierungsvorgänge fehlschlagen.
  • Windows Server 2022 wird am 15. März 2027 eingestellt. Nach diesem Datum produziert AKS keine neuen Knotenimages mehr oder stellt Sicherheitspatches bereit. Nach diesem Datum können Sie keine neuen Knotenpools mit Windows Server 2022 in jeder Kubernetes-Version erstellen. Alle vorhandenen Knotenpools mit Windows Server 2022 werden nicht unterstützt. Windows Server 2022 wird in Kubernetes, Version 1.36 und höher, nicht unterstützt. Ab dem 1. April 2028 entfernt AKS alle vorhandenen Knotenimages für Windows Server 2022, was bedeutet, dass Skalierungsvorgänge fehlschlagen.

Weitere Informationen finden Sie in den AKS-Versionshinweisen. Weitere Informationen, um über die neuesten Windows Server-Betriebssystemversionen auf dem neuesten Stand zu bleiben, und zu unserer Roadmap, was für den Support in AKS geplant ist, finden Sie in unserer öffentlichen AKS-Roadmap.

  • Fügen Sie einen Windows Server-Knotenpool mithilfe des New-AzAksNodePool Cmdlets hinzu. Der folgende Befehl erstellt einen neuen Knotenpool namens npwin und fügt ihn dem myAKSCluster hinzu. Der Befehl verwendet auch das Standardsubnetz im Standard-VNet, das beim Ausführen von New-AzAksCluster erstellt wurde:

    New-AzAksNodePool -ResourceGroupName myResourceGroup `
        -ClusterName myAKSCluster `
        -VmSetType VirtualMachineScaleSets `
        -OsType Windows `
        -OsSKU Windows2022 `
        -Name npwin
    

Herstellen einer Verbindung mit dem Cluster

Sie verwenden kubectl, den Kubernetes-Befehlszeilenclient, um Ihre Kubernetes-Cluster zu verwalten. Bei Verwendung von Azure Cloud Shell ist kubectl bereits installiert. Wenn Sie kubectl lokal installieren möchten, können Sie das Cmdlet Install-AzAzAksCliTool verwenden.

  1. Verwenden Sie das Cmdlet kubectl, um Import-AzAksCredential für die Verbindung mit Ihrem Kubernetes-Cluster zu konfigurieren. Mit diesem Befehl werden die Anmeldeinformationen heruntergeladen, und die Kubernetes-Befehlszeilenschnittstelle wird für deren Verwendung konfiguriert.

    Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
    
  2. Überprüfen Sie die Verbindung zu Ihrem Cluster mit dem Befehl kubectl get, der eine Liste der Clusterknoten zurückgibt.

    kubectl get nodes
    

    Die folgende Beispielausgabe zeigt alle Knoten im Cluster. Stellen Sie sicher, dass der Status aller Knoten Bereit ist:

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-20786768-vmss000000   Ready    agent   22h   v1.27.7
    aks-nodepool1-20786768-vmss000001   Ready    agent   22h   v1.27.7
    aksnpwin000000                      Ready    agent   21h   v1.27.7
    

Bereitstellen der Anwendung

Eine Kubernetes-Manifestdatei definiert einen gewünschten Zustand (Desired State) für den Cluster – also beispielsweise, welche Containerimages ausgeführt werden sollen. In diesem Artikel verwenden Sie ein Manifest, um alle Objekte zu erstellen, die für die Ausführung der ASP.NET-Beispielanwendung in einem Windows Server-Container benötigt werden. Dieses Manifest beinhaltet eine Kubernetes-Bereitstellung für die ASP.NET-Beispielanwendung und einen externen Kubernetes-Dienst für den Zugriff auf die Anwendung über das Internet.

Die ASP.NET-Beispielanwendung wird als Teil des .NET Framework-Beispiels 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. Mit der Kubernetes-Manifestdatei muss auch eine Knotenauswahl definiert werden. So wird Ihrem AKS-Cluster mitgeteilt, dass der Pod Ihrer ASP.NET-Beispielanwendung auf einem Knoten ausgeführt werden soll, für den die Ausführung von Windows Server-Containern möglich ist.

  1. Erstellen Sie eine Datei namens 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.

    Wenn Sie die YAML-Datei lokal erstellen und speichern, können Sie die Manifestdatei in Ihr Standardverzeichnis in CloudShell hochladen, indem Sie die Schaltfläche Dateien hochladen/herunterladen auswählen und die Datei aus Ihrem lokalen Dateisystem auswählen.

  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
    

    In der folgende Beispielausgabe sind die erfolgreich erstellten Bereitstellungen und Dienste aufgeführt:

    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. Überprüfen Sie den Status der bereitgestellten Pods mithilfe des Befehls kubectl get pods. Stellen Sie sicher, dass alle Pods den Status Running haben, bevor Sie fortfahren.

    kubectl get pods
    
  2. Verwenden Sie zum Überwachen des Fortschritts den Befehl kubectl get servicemit dem Argument --watch.

    kubectl get service sample --watch
    

    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
    
  3. Sobald die externe IP-Adresse (EXTERNAL-IP) von pending (ausstehend) in eine tatsächliche öffentliche IP-Adresse geändert wurde, verwenden Sie CTRL-C, um die kubectl-Überwachung 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
    
  4. Sehen Sie sich die Beispielanwendung in Aktion an, indem Sie ein Fenster im Webbrowser mit der externen IP-Adresse Ihres Dienstes öffnen.

    Screenshot der Navigation zur ASP.NET-Beispielanwendung.

Löschen von Ressourcen

Wenn Sie nicht vorhaben, das AKS-Tutorial zu absolvieren, dann löschen Sie Ihr Cluster, damit keine Azure-Gebühren anfallen.

  • Entfernen Sie die Ressourcengruppe, den Containerdienst und alle zugehörigen Ressourcen mithilfe des Remove-AzResourceGroup Cmdlets.

    Remove-AzResourceGroup -Name myResourceGroup
    

    Hinweis

    Der AKS-Cluster wurde mit einer systemseitig zugewiesenen verwalteten Identität erstellt (Standardidentitätsoption, die in diesem Schnellstart verwendet wird). Die Azure-Plattform verwaltet diese Identität, so dass sie nicht entfernt werden muss.

Nächste Schritte

In dieser Schnellstartanleitung haben Sie einen Kubernetes-Cluster und eine ASP.NET-Beispielanwendung in einem Windows Server-Container bereitgestellt. Diese Beispielanwendung dient nur zu Demozwecken und stellt nicht alle bewährten Methoden für Kubernetes-Anwendungen dar. Anleitungen zum Erstellen vollständiger Lösungen mit AKS für die Produktion finden Sie unter AKS-Lösungsleitfaden.

Weitere Informationen zu AKS sowie ein vollständiges Beispiel vom Code bis zur Bereitstellung finden Sie im Kubernetes-Clustertutorial.