Vanliga frågor och svar om Windows Server-nodpooler i AKS

I Azure Kubernetes Service (AKS) kan du skapa en nodpool som kör Windows Server som gästoperativsystem på noderna. Dessa noder kan köra interna Windows-containerprogram, till exempel de som bygger på .NET Framework. Det finns skillnader i hur Linux- och Windows-operativsystemet tillhandahåller containerstöd. Vissa vanliga Linux Kubernetes- och poddrelaterade funktioner är för närvarande inte tillgängliga för Windows-nodpooler.

Den här artikeln beskriver några av de vanliga frågorna och os-begreppen för Windows Server-noder i AKS.

Vilken typ av diskar stöds för Windows?

Azure Disks och Azure Files är de volymtyper som stöds och används som NTFS-volymer i Windows Server-containern.

Stöder Linux och Windows virtuella datorer av generation 2 ??

Virtuella datorer av generation 2 stöds endast i Linux och Windows för WS2022. Mer information finns i Stöd för virtuella datorer i generation 2 i Azure.

Hur gör jag för att korrigera mina Windows-noder?

Om du vill hämta de senaste korrigeringarna för Windows-noder kan du antingen uppgradera nodpoolen eller uppgradera nodbilden. Windows Uppdateringar är inte aktiverade på noder i AKS. AKS släpper nya nodpoolsbilder så snart korrigeringar är tillgängliga, och det är användarens ansvar att uppgradera nodpooler så att de hålls aktuella för korrigeringar och snabbkorrigeringar. Den här korrigeringsprocessen gäller även för kubernetes-versionen som används. AKS-viktig information anger när nya versioner är tillgängliga. Mer information om hur du uppgraderar Windows Server-nodpoolen finns i Uppgradera en nodpool i AKS. Om du bara är intresserad av att uppdatera nodbilden kan du läsa om uppgraderingar av AKS-nodbilden.

Kommentar

Den uppdaterade Windows Server-avbildningen används endast om en klusteruppgradering (kontrollplansuppgradering) har utförts innan nodpoolen uppgraderas.

Stöds bevarandet av klientkällans IP-adress?

För närvarande stöds inte IP-bevarande av klientkälla med Windows-noder.

Kan jag ändra det maximala antalet poddar per nod?

Ja. Mer information om konsekvenserna av att göra en ändring och vilka alternativ som är tillgängliga finns i Maximalt antal poddar.

Vad är TCP-standardtimeouten i Windows OS?

TCP-standardtimeouten i Windows OS är 4 minuter. Det här värdet kan inte konfigureras. När ett program använder en längre tidsgräns stängs TCP-anslutningarna mellan olika containrar i samma nod efter fyra minuter.

Varför visas ett fel när jag försöker skapa en ny Windows-agentpool?

Om du skapade klustret före februari 2020 och aldrig har utfört några klusteruppgraderingsåtgärder använder klustret fortfarande en gammal Windows-avbildning. Du kanske har sett ett fel som liknar:

"Följande lista över avbildningar som refereras från distributionsmallen finns inte: Utgivare: MicrosoftWindowsServer, Erbjudande: WindowsServer, Sku: 2019-datacenter-core-smalldisk-2004, Version: senaste. Mer information om hur du hittar tillgängliga avbildningar finns i Hitta och använda virtuella Azure Marketplace-avbildningar med Azure PowerShell."

Så här åtgärdar du det här felet:

  1. Uppgradera klusterkontrollplanet för att uppdatera avbildningserbjudandet och utgivaren.
  2. Skapa nya Windows-agentpooler.
  3. Flytta Windows-poddar från befintliga Windows-agentpooler till nya Windows-agentpooler.
  4. Ta bort gamla Windows-agentpooler.

Varför visas ett fel när jag försöker distribuera Windows-poddar?

Om du anger ett värde i --max-pods mindre än det antal poddar som du vill skapa kan felet visas No available addresses .

Åtgärda det här felet genom att az aks nodepool add använda kommandot med ett tillräckligt --max-pods högt värde:

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

Mer information finns i dokumentationen--max-pods.

Varför finns det en oväntad användare med namnet "sshd" på min VM-nod?

AKS lägger till en användare med namnet "sshd" när du installerar OpenSSH-tjänsten. Den här användaren är inte skadlig. Vi rekommenderar att kunderna uppdaterar sina aviseringar för att ignorera det här oväntade användarkontot.

Hur gör jag för att rotera tjänstens huvudnamn för min Windows-nodpool?

Windows-nodpooler stöder inte rotering av tjänstens huvudnamn. Om du vill uppdatera tjänstens huvudnamn måste du skapa en ny Windows-nodpool och migrera dina poddar från den gamla poolen till den nya. När dina poddar har migrerats till den nya poolen tar du bort den äldre nodpoolen.

I stället för tjänstens huvudnamn använder du hanterade identiteter, som i princip är omslutningar kring tjänstens huvudnamn. Mer information finns i Använda hanterade identiteter i Azure Kubernetes Service.

Hur gör jag för att ändra administratörslösenordet för Windows Server-noder i mitt kluster?

När du skapar AKS-klustret anger du parametrarna --windows-admin-password och --windows-admin-username för att ange administratörsautentiseringsuppgifterna för alla Windows Server-noder i klustret. Om du inte angav autentiseringsuppgifter för administratören när du skapade ett kluster med hjälp av Azure-portalen eller när du konfigurerade --vm-set-type VirtualMachineScaleSets och --network-plugin azure med hjälp av Azure CLI, är användarnamnet som standard azureuser och ett slumpmässigt lösenord.

Om du vill ändra administratörslösenordet använder du az aks update kommandot:

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

Viktigt!

az aks update Åtgärden uppgraderar endast Windows Server-nodpooler och orsakar en omstart. Linux-nodpooler påverkas inte.

När du ändrar --windows-admin-passwordmåste det nya lösenordet vara minst 14 tecken och uppfylla lösenordskraven för Windows Server.

Hur många nodpooler kan jag skapa?

Ett AKS-kluster med Windows-nodpooler har ingen annan AKS-resursgräns än den standard som angetts för AKS-tjänsten. Mer information finns i Kvoter, storleksbegränsningar för virtuella datorer och regiontillgänglighet i Azure Kubernetes Service (AKS).

Vad kan jag namnge mina Windows-nodpooler?

En Windows-nodpool kan ha ett namn på sex tecken.

Stöds alla funktioner med Windows-noder?

Kubenet stöds för närvarande inte med Windows-noder.

Kan jag köra ingresskontrollanter på Windows-noder?

Ja, en ingresskontrollant som stöder Windows Server-containrar kan köras på Windows-noder i AKS.

Kan mina Windows Server-containrar använda gMSA?

Stöd för grupphanterat tjänstkonto (gMSA) är allmänt tillgängligt för Windows på AKS. Se Aktivera grupphanterade tjänstkonton (GMSA) för dina Windows Server-noder i ditt Azure Kubernetes Service-kluster (AKS)

Kan jag använda Azure Monitor för containrar med Windows-noder och containrar?

Ja, det kan du. Azure Monitor är dock en offentlig förhandsversion för insamling av loggar (stdout, stderr) och mått från Windows-containrar. Du kan också ansluta till liveströmmen av stdout-loggar från en Windows-container.

Finns det några begränsningar för antalet tjänster i ett kluster med Windows-noder?

Ett kluster med Windows-noder kan ha cirka 500 tjänster (ibland mindre) innan portöverbelastning uppstår. Den här begränsningen gäller för en Kubernetes-tjänst med en princip för extern trafik inställd på "Kluster".

När en extern trafikprincip för en tjänst konfigureras som kluster, genomgår trafiken ytterligare en KÄLL-NAT på noden, vilket också resulterar i en reservation av en port från den dynamiska TCPIP-portpoolen. Den här portpoolen är en begränsad resurs (~16 000 portar som standard) och många aktiva anslutningar till en tjänst kan leda till dynamisk portpoolsöverbelastning, vilket resulterar i att anslutningen avbryts.

Om Kubernetes-tjänsten har konfigurerats med en extern trafikprincip inställd på "Lokal" uppstår sannolikt inte portöverbelastningsproblem vid 500 tjänster.

Kan jag använda Azure Hybrid-förmån med Windows-noder?

Ja. Azure Hybrid-förmån för Windows Server minskar driftskostnaderna genom att låta dig ta med din lokala Windows Server-licens till AKS Windows-noder.

Azure Hybrid-förmån kan användas i hela AKS-klustret eller på enskilda noder. För enskilda noder måste du bläddra till nodresursgruppen och tillämpa Azure Hybrid-förmån på noderna direkt. Mer information om hur du tillämpar Azure Hybrid-förmån på enskilda noder finns i Azure Hybrid-förmån för Windows Server.

Om du vill använda Azure Hybrid-förmån i ett nytt AKS-kluster kör az aks create du kommandot och använder --enable-ahub argumentet .

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

Om du vill använda Azure Hybrid-förmån i ett befintligt AKS-kluster kör az aks update du kommandot och använder uppdateringen av klustret med hjälp --enable-ahub av argumentet .

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

Om du vill kontrollera om Azure Hybrid-förmån har angetts på Windows-noderna i klustret kör az vmss show du kommandot med argumenten --name och --resource-group för att fråga vm-skalningsuppsättningen. Om du vill identifiera resursgruppen som skalningsuppsättningen för Windows-nodpoolen skapas i kan du köra az vmss list -o table kommandot .

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

Om Windows-noderna i skalningsuppsättningen har Azure Hybrid-förmån aktiverat, kommer utdata az vmss show från att likna följande:

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

Hur gör jag för att ändra tidszonen för en container som körs?

Om du vill ändra tidszonen för en Windows Server-container som körs ansluter du till den container som körs med en PowerShell-session. Till exempel:

kubectl exec -it CONTAINER-NAME -- powershell

I containern som körs använder du Set-TimeZone för att ange tidszonen för den container som körs. Till exempel:

Set-TimeZone -Id "Russian Standard Time"

Om du vill se den aktuella tidszonen för containern som körs eller en tillgänglig lista över tidszoner använder du Get-TimeZone.

Kan jag upprätthålla sessionstillhörighet från klientanslutningar till poddar med Windows-containrar?

Även om upprätthållande av sessionstillhörighet från klientanslutningar till poddar med Windows-containrar stöds i Windows Server 2022 OS-versionen, uppnår du sessionstillhörighet efter klient-IP för närvarande genom att begränsa önskad podd till att köra en enda instans per nod och konfigurera Kubernetes-tjänsten för att dirigera trafik till podden på den lokala noden.

Använd följande konfiguration:

  1. Använd ett AKS-kluster som kör en lägsta version av 1.20.
  2. Begränsa podden så att endast en instans tillåts per Windows-nod. Du kan uppnå detta med hjälp av antitillhörighet i distributionskonfigurationen.
  3. I konfigurationen av Kubernetes-tjänsten anger du externalTrafficPolicy=Local. Detta säkerställer att Kubernetes-tjänsten endast dirigerar trafik till poddar inom den lokala noden.
  4. I kubernetes-tjänstkonfigurationen anger du sessionAffinity: ClientIP. Detta säkerställer att Azure Load Balancer konfigureras med sessionstillhörighet.

Nästa steg

Information om hur du kommer igång med Windows Server-containrar i AKS finns i Skapa en nodpool som kör Windows Server i AKS.