Häufig gestellte Fragen zu Windows Server-Knotenpools in AKS

In Azure Kubernetes Service (AKS) können Sie einen Knotenpool erstellen, der Windows Server als Gastbetriebssystem auf den Knoten ausführt. Auf diesen Knoten können native Windows-Containeranwendungen ausgeführt werden, z. B. die in .NET Framework integrierten Anwendungen. Es gibt Unterschiede in der Containerunterstützung unter Linux und Windows. Einige gängige Kubernetes- und podbezogene Features sind unter Linux zurzeit für Windows Server-Knotenpools nicht verfügbar.

In diesem Artikel werden einige häufig gestellten Fragen und Betriebssystemkonzepte für Windows Server-Knoten in AKS erläutert.

Welche Typen von Datenträgern werden für Windows unterstützt?

Azure-Datenträger und Azure Files sind die unterstützten Volumetypen, und auf sie wird als NTFS-Volumes im Windows Server-Container zugegriffen.

Unterstützen Linux und Windows virtuelle Computer (VMs) der Generation 2?

VMs der Generation 2 werden nur unter Linux und Windows für WS2022 unterstützt. Weitere Informationen finden Sie unter Unterstützung für VMs der Generation 2 in Azure.

Wie kann ich meine Windows-Knoten patchen?

Sie können entweder den Knotenpool oder das Knotenimage aktualisieren, um die neuesten Patches für Windows-Knoten zu erhalten. Windows-Updates sind auf Knoten in AKS nicht aktiviert. AKS gibt neue Knotenpoolimages frei, sobald Patches verfügbar sind. Die Kunden sind dafür verantwortlich, Knotenpools zu aktualisieren, um in Bezug auf Patches und Hotfixes auf dem neuesten Stand zu bleiben. Dieser Patchprozess gilt auch für die verwendete Kubernetes-Version. In den AKS-Versionshinweisen wird angegeben, wann neue Versionen verfügbar sind. Weitere Informationen zum Upgrade des Windows Server-Knotenpools finden Sie unter Durchführen eines Upgrades für einen Knotenpool in AKS. Wenn Sie nur das Knotenimage aktualisieren möchten, finden Sie weitere Informationen unter Vorschau – Upgrades für AKS-Knotenimages (Azure Kubernetes Service).

Hinweis

Das aktualisierte Windows Server-Image wird nur verwendet, wenn vor dem Upgrade des Knotenpools ein Clusterupgrade (ein Upgrade der Steuerungsebene) durchgeführt wird.

Wird das Beibehalten der Client-Quell-IP unterstützt?

Derzeit wird die Beibehaltung der Client-Quell-IP bei Windows-Knoten nicht unterstützt.

Kann ich die maximale Anzahl von Pods pro Knoten ändern?

Ja. Die Auswirkungen einer solchen Änderung sowie die verfügbaren Optionen finden Sie unter Maximale Pods pro Knoten.

Wie lang ist das standardmäßige TCP-Timeout im Windows-Betriebssystem?

Das standardmäßige TCP-Timeout im Windows-Betriebssystem beträgt 4 Minuten. Dieser Wert kann nicht konfiguriert werden. Wenn eine Anwendung ein längeres Timeout verwendet, werden die TCP-Verbindungen zwischen verschiedenen Containern auf demselben Knoten nach vier Minuten geschlossen.

Warum wird mir ein Fehler angezeigt, wenn ich versuche, einen neuen Windows-Agentpool zu erstellen?

Wenn Sie Ihren Cluster vor Februar 2020 erstellt und noch kein Clusterupgrade durchgeführt haben, verwendet der Cluster immer noch ein altes Windows-Image. Möglicherweise wurde Ihnen dann bereits eine Fehlermeldung angezeigt, die in etwa wie folgt lautet:

"The following list of images referenced from the deployment template is not found: Herausgeber: MicrosoftWindowsServer, Offer: WindowsServer, Sku: 2019-datacenter-core-smalldisk-2004, Version: latest. Weitere Informationen zu verfügbaren Images finden Sie unter Suchen und Verwenden von VM-Images im Azure Marketplace mit Azure PowerShell.“

So beheben Sie diesen Fehler

  1. Aktualisieren Sie die Clustersteuerungsebene, um das Imageangebot und den Herausgeber zu aktualisieren.
  2. Erstellen Sie neue Windows-Agentpools.
  3. Verschieben Sie Windows-Pods aus vorhandenen Windows-Agentpools in neue Windows-Agentpools.
  4. Löschen Sie alte Windows-Agentpools.

Warum wird mir ein Fehler angezeigt, wenn ich versuche, Windows-Pods bereitzustellen?

Wenn Sie in --max-pods einen Wert angeben, der kleiner ist als die Anzahl von Pods, die Sie erstellen möchten, kann der Fehler No available addresses angezeigt werden.

Um diesen Fehler zu beheben, verwenden Sie den Befehl az aks nodepool add mit einem Wert für --max-pods, der hoch genug ist:

az aks nodepool add \
    --cluster-name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP \
    --name $NODEPOOL_NAME \
    --max-pods 3

Weitere Informationen finden Sie in der Dokumentation zu --max-pods.

Warum gibt es einen unerwarteten Benutzer namens „sshd“ auf meinem VM-Knoten?

AKS fügt bei der Installation des OpenSSH-Diensts einen Benutzer namens „sshd“ hinzu. Dieser Benutzer ist nicht böswillig. Wir empfehlen unseren Kunden, ihre Warnungen zu aktualisieren, um dieses unerwartete Benutzerkonto zu ignorieren.

Wie rotiere ich den Dienstprinzipal für meinen Windows-Knotenpool?

Windows-Knotenpools unterstützen die Rotation von Dienstprinzipalen nicht. Erstellen Sie einen neuen Windows-Knotenpool, und migrieren Sie Ihre Pods vom älteren Pool zum neuen, um den Dienstprinzipal zu aktualisieren. Nachdem die Pods zum neuen Pool migriert wurden, löschen Sie den älteren Knotenpool.

Verwenden Sie statt Dienstprinzipalen verwaltete Identitäten, bei denen es sich im Grunde um Wrapper um Dienstprinzipale handelt. Weitere Informationen finden Sie unter Verwenden verwalteter Identitäten in Azure Kubernetes Service.

Wie ändere ich das Administratorkennwort für Windows Server-Knoten in meinem Cluster?

Wenn Sie Ihren AKS-Cluster erstellen, geben Sie die Parameter --windows-admin-password und --windows-admin-username an, um die Administratoranmeldeinformationen für alle Windows Server-Knoten im Cluster festzulegen. Wenn Sie beim Erstellen eines Clusters über das Azure-Portal oder beim Festlegen von --vm-set-type VirtualMachineScaleSets und --network-plugin azure über die Azure CLI keine Administratoranmeldeinformationen angegeben haben, wird der Benutzername standardmäßig auf azureuser und ein zufälliges Kennwort festgelegt.

Verwenden Sie den az aks update-Befehl, um das Administratorkennwort zu ändern:

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --windows-admin-password $NEW_PW

Wichtig

Wenn Sie den Vorgang az aks update ausführen, wird nur für Windows Server-Knotenpools ein Upgrade durchgeführt und es erfolgt ein Neustart. Linux-Knotenpools sind nicht betroffen.

Wenn Sie --windows-admin-password ändern, muss das neue Kennwort mindestens 14 Zeichen lang sein und die Windows Server-Kennwortanforderungen erfüllen.

Wie viele Knotenpools kann ich erstellen?

Ein AKS-Cluster mit Windows-Knotenpools verfügt nicht über einen anderen AKS-Ressourcengrenzwert als der für den AKS-Dienst angegebene Standard. Weitere Informationen finden Sie unter Kontingente, Größeneinschränkungen für VMs und regionale Verfügbarkeit in Azure Kubernetes Service (AKS).

Wie kann ich meine Windows-Knotenpools benennen?

Ein Windows Knotenpool kann einen Namen aus sechs Zeichen aufweisen.

Werden alle Features für Windows-Knoten unterstützt?

Kubenet wird derzeit nicht für Windows-Knoten unterstützt.

Kann ich Eingangscontroller auf Windows-Knoten ausführen?

Ja, ein Eingangsdatencontroller, der Windows Server-Container unterstützt, kann auf Windows-Knoten in AKS ausgeführt werden.

Können meine Windows Server-Container gMSA verwenden?

Die Unterstützung für gruppenverwaltete Dienstkonten (gMSA, Group-Managed Service Account) ist für Windows unter AKS allgemein verfügbar. Siehe dazu Aktivieren von gruppenverwalteten Dienstkonten (GMSAs) für Ihre Windows Server-Knoten auf Ihrem AKS-Cluster (Azure Kubernetes Service)

Kann ich Azure Monitor für Container mit Windows-Knoten und -Containern verwenden?

Ja, das ist möglich. Allerdings befindet sich die Azure Monitor-Funktion zum Erfassen von Protokollen (stdout, stderr) und Metriken aus Windows-Containern in der öffentlichen Vorschau. Sie können ebenso an den Livestream von stdout-Protokollen aus einem Windows-Container anfügen.

Gibt es Einschränkungen in Bezug auf die Anzahl von Diensten in einem Cluster mit Windows-Knoten?

Ein Cluster mit Windows-Knoten kann ungefähr 500 Dienste enthalten (in manchen Fällen weniger), bevor es zu einer Portüberlastung kommt. Diese Einschränkung gilt für einen Kubernetes-Dienst, bei dem die Richtlinie für externen Datenverkehr auf „Cluster“ festgelegt ist.

Wenn die Richtlinie für externen Datenverkehr für einen Dienst als „Cluster“ konfiguriert ist, wird der Datenverkehr einer zusätzlichen Quell-NAT auf dem Knoten unterzogen, was auch zur Reservierung eines Ports aus dem dynamischen TCPIP-Portpool führt. Bei diesem Portpool handelt es sich um eine begrenzte Ressource (standardmäßig ca. 16.000 Ports), und viele aktive Verbindungen mit Diensten können zu einer Überlastung des dynamischen Portpools führen, was Verbindungsausfälle nach sich zieht.

Wenn der Kubernetes-Dienst mit einer auf „Lokal“ festgelegten Richtlinie für den externen Datenverkehr konfiguriert ist, treten bei 500 Diensten wahrscheinlich keine Probleme durch Portüberlastung auf.

Kann ich den Azure-Hybridvorteil mit Windows-Knoten verwenden?

Ja. Der Azure-Hybridvorteil für Windows Server senkt die Betriebskosten, da Sie Ihre lokale Windows Server-Lizenz in AKS-Windows-Knoten nutzen können.

Der Azure-Hybridvorteil kann für Ihren gesamten AKS-Cluster oder für einzelne Knoten verwendet werden. Für einzelne Knoten müssen Sie zur Knotenressourcengruppe wechseln und den Azure-Hybridvorteil direkt auf die Knoten anwenden. Weitere Informationen zum Anwenden des Azure-Hybridvorteils auf einzelne Knoten finden Sie unter Azure-Hybridvorteil für Windows Server.

Um den Azure-Hybridvorteil für einen neuen AKS-Cluster zu nutzen, führen Sie den Befehl az aks create mit dem Argument --enable-ahub aus.

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --load-balancer-sku Standard \
    --windows-admin-password 'Password1234$' \
    --windows-admin-username azure \
    --network-plugin azure
    --enable-ahub

Um den Azure-Hybridvorteil für einen vorhandenen AKS-Cluster zu verwenden, führen Sie den Befehl az aks update mit dem Argument --enable-ahub aus, um den Cluster zu aktualisieren.

az aks update \
    --resource-group myResourceGroup
    --name myAKSCluster
    --enable-ahub

Um zu überprüfen, ob der Azure-Hybridvorteil auf den Windows-Knoten im Cluster festgelegt ist, führen Sie den Befehl az vmss show mit den Argumenten --name und --resource-group aus, um die Skalierungsgruppe des virtuellen Computers abzufragen. Um die Ressourcengruppe zu identifizieren, in der die Skalierungsgruppe für den Windows Knotenpool erstellt wurde, können Sie den Befehl az vmss list -o table ausführen.

az vmss show --name myScaleSet --resource-group MC_<resourceGroup>_<clusterName>_<region>

Wenn für die Windows-Knoten in der Skalierungsgruppe der Azure-Hybridvorteil aktiviert wurde, sieht die Ausgabe von az vmss show in etwa folgendermaßen aus:

""hardwareProfile": null,
    "licenseType": "Windows_Server",
    "networkProfile": {
      "healthProbe": null,
      "networkApiVersion": null,

Wie kann ich die Zeitzone eines ausgeführten Containers ändern?

Stellen Sie eine Verbindung mit dem ausgeführten Container mithilfe einer PowerShell-Sitzung her, um die Zeitzone eines ausgeführten Windows Server-Containers zu ändern. Beispiel:

kubectl exec -it CONTAINER-NAME -- powershell

Verwenden Sie im ausgeführten Container Set-TimeZone, um die Zeitzone des ausgeführten Containers festzulegen. Beispiel:

Set-TimeZone -Id "Russian Standard Time"

Mithilfe von Get-TimeZone können Sie die aktuelle Zeitzone des ausgeführten Containers oder eine verfügbare Liste von Zeitzonen anzeigen.

Kann ich die Sitzungsaffinität zwischen Clientverbindungen und Pods mit Windows Containern beibehalten?

Das Beibehalten der Sitzungsaffinität zwischen Clientverbindungen und Pods mit Windows-Containern wird zwar in der Windows Server 2022-Betriebssystemversion unterstützt, aber Sie erzielen diese Affinität per Client-IP-Adresse derzeit nur, indem Sie den gewünschten Pod auf die Ausführung einer einzelnen Instanz pro Knoten beschränken und Ihren Kubernetes-Dienst so konfigurieren, dass Datenverkehr an den Pod auf dem lokalen Knoten gesendet wird.

Verwenden Sie die folgende Konfiguration:

  1. Verwenden Sie einen AKS-Cluster mit mindestens Version 1.20.
  2. Beschränken Sie Ihren Pod so, dass nur eine Instanz pro Windows Knoten zugelassen wird. Dies können Sie durch Verwenden von Antiaffinität in Ihrer Bereitstellungskonfiguration erreichen.
  3. Legen Sie in Ihrer Kubernetes-Dienstkonfiguration externalTrafficPolicy=Local fest. Damit wird sichergestellt, dass der Kubernetes-Dienst Datenverkehr nur an Pods auf dem lokalen Knoten sendet.
  4. Legen Sie in Ihrer Kubernetes-Dienstkonfiguration sessionAffinity: ClientIP fest. Damit wird sichergestellt, dass der Azure Load Balancer mit Sitzungsaffinität konfiguriert wird.

Nächste Schritte

Informationen zum Einstieg in Windows Server-Container in AKS finden Sie unter Erstellen eines Windows Server-Containers in einem AKS-Cluster mithilfe der Azure CLI.