Distribuera en Windows Server-container i ett AKS-kluster (Azure Kubernetes Service) med hjälp av PowerShell
Azure Kubernetes Service (AKS) är en hanterad Kubernetes-tjänst som gör att du snabbt kan distribuera och hantera kluster. I den här artikeln använder du Azure PowerShell för att distribuera ett AKS-kluster som kör Windows Server-containrar. Du distribuerar också ett ASP.NET exempelprogram i en Windows Server-container till klustret.
Kommentar
För att komma igång med att snabbt etablera ett AKS-kluster innehåller den här artikeln steg för att distribuera ett kluster med standardinställningar endast i utvärderingssyfte. Innan du distribuerar ett produktionsklart kluster rekommenderar vi att du bekantar dig med vår referensarkitektur för baslinje för att överväga hur det överensstämmer med dina affärskrav.
Innan du börjar
Den här snabbstarten förutsätter grundläggande kunskaper om Kubernetes-begrepp. Mer information finns i Viktiga koncept för Azure Kubernetes Service (AKS).
-
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
För enkel användning kan du prova PowerShell-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Azure Cloud Shell.
Om du vill använda PowerShell lokalt installerar du Az PowerShell-modulen och ansluter till ditt Azure-konto med hjälp av cmdleten Connect-AzAccount . Kontrollera att du kör kommandona med administratörsbehörighet. Mer information finns i Installera Azure PowerShell.
Kontrollera att den identitet som du använder för att skapa klustret har lämpliga minimibehörigheter. Mer information om åtkomst och identitet för AKS finns i Åtkomst- och identitetsalternativ för Azure Kubernetes Service (AKS).
Om du har fler än en Azure-prenumeration anger du den prenumeration som du vill använda för snabbstarten genom att anropa cmdleten Set-AzContext . Mer information finns i Hantera Azure-prenumerationer med Azure PowerShell.
Skapa en resursgrupp
En Azure-resursgrupp är en logisk grupp där Azure-resurser distribueras och hanteras. När du skapar en resursgrupp uppmanas du att ange en plats. Den här platsen är platsen där resursgruppsmetadata lagras och där dina resurser körs i Azure om du inte anger en annan region när du skapar resurser.
Om du vill skapa en resursgrupp använder du cmdleten New-AzResourceGroup . I följande exempel skapas en resursgrupp med namnet myResourceGroup i regionen eastus .
New-AzResourceGroup -Name myResourceGroup -Location eastus
Följande exempelutdata visar att resursgruppen har skapats:
ResourceGroupName : myResourceGroup
Location : eastus
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup
Skapa ett AKS-kluster
I det här avsnittet skapar vi ett AKS-kluster med följande konfiguration:
- Klustret har konfigurerats med två noder för att säkerställa att det fungerar tillförlitligt. En nod är en virtuell Azure-dator (VM) som kör Kubernetes-nodkomponenterna och containerkörningen.
- Parametrarna
-WindowsProfileAdminUserName
och-WindowsProfileAdminUserPassword
anger administratörsautentiseringsuppgifterna för alla Windows Server-noder i klustret och måste uppfylla kraven på windows Server-lösenordskomplexitet. - Nodpoolen använder
VirtualMachineScaleSets
.
Följ dessa steg för att skapa AKS-klustret med Azure PowerShell:
Skapa administratörsautentiseringsuppgifterna för dina Windows Server-containrar med hjälp av följande kommando. Med det här kommandot uppmanas du att ange en
WindowsProfileAdminUserName
ochWindowsProfileAdminUserPassword
. Lösenordet måste innehålla minst 14 tecken och uppfylla kraven på lösenordskomplexitet för Windows Server.$AdminCreds = Get-Credential ` -Message 'Please create the administrator credentials for your Windows Server containers'
Skapa klustret med cmdleten New-AzAksCluster och ange parametrarna
WindowsProfileAdminUserName
ochWindowsProfileAdminUserPassword
.New-AzAksCluster -ResourceGroupName myResourceGroup ` -Name myAKSCluster ` -NodeCount 2 ` -NetworkPlugin azure ` -NodeVmSetType VirtualMachineScaleSets ` -WindowsProfileAdminUserName $AdminCreds.UserName ` -WindowsProfileAdminUserPassword $secureString ` -GenerateSshKey
Efter några minuter slutförs kommandot och returnerar JSON-formaterad information om klustret. Ibland kan det ta längre tid än några minuter att etablera klustret. Tillåt upp till 10 minuter för etablering.
Om du får ett lösenordsverifieringsfel och lösenordet som du anger uppfyller kraven på längd och komplexitet kan du prova att skapa resursgruppen i en annan region. Försök sedan att skapa klustret med den nya resursgruppen.
Om du inte anger ett administratörsanvändarnamn och lösenord när du skapar nodpoolen anges användarnamnet till azureuser och lösenordet är inställt på ett slumpmässigt värde. Mer information finns i Vanliga frågor och svar om Windows Server.
Administratörsanvändarnamnet kan inte ändras, men du kan ändra administratörslösenordet som AKS-klustret använder för Windows Server-noder med hjälp av
az aks update
. Mer information finns i Vanliga frågor och svar om Windows Server.Om du vill köra ett AKS-kluster som stöder nodpooler för Windows Server-containrar måste klustret använda en nätverksprincip som använder [Azure CNI (avancerat)][azure-cni] nätverkstillägg. Parametern
-NetworkPlugin azure
anger Azure CNI.
Lägga till en nodpool
Som standard skapas ett AKS-kluster med en nodpool som kan köra Linux-containrar. Du måste lägga till en annan nodpool som kan köra Windows Server-containrar tillsammans med Linux-nodpoolen.
Windows Server 2022 är standardoperativsystemet för Kubernetes version 1.25.0 och senare. Windows Server 2019 är standardoperativsystemet för tidigare versioner. Om du inte anger en viss OS SKU skapar Azure den nya nodpoolen med standard-SKU:n för den version av Kubernetes som används av klustret.
Om du vill använda os-standard-SKU:n skapar du nodpoolen utan att ange en OS-SKU. Nodpoolen är konfigurerad för standardoperativsystemet baserat på Kubernetes-versionen av klustret.
Lägg till en Windows Server-nodpool med cmdleten New-AzAksNodePool . Följande kommando skapar en ny nodpool med namnet npwin och lägger till den i myAKSCluster. Kommandot använder också standardundernätet i det virtuella standardnätverk som skapades när du körde New-AzAksCluster
:
New-AzAksNodePool -ResourceGroupName myResourceGroup `
-ClusterName myAKSCluster `
-VmSetType VirtualMachineScaleSets `
-OsType Windows `
-Name npwin
Anslut till klustret
Du använder kubectl, Kubernetes-kommandoradsklienten, för att hantera dina Kubernetes-kluster. Om du använder Azure Cloud Shell är kubectl
redan installerat. Om du vill installera kubectl
lokalt kan du använda cmdleten Install-AzAzAksCliTool
.
Konfigurera
kubectl
för att ansluta till kubernetes-klustret med hjälp av cmdleten Import-AzAksCredential . Det här kommandot laddar ned autentiseringsuppgifter och konfigurerar Kubernetes CLI för att använda dem.Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
Kontrollera anslutningen till klustret med kommandot kubectl get , som returnerar en lista över klusternoderna.
kubectl get nodes
Följande exempelutdata visar alla noder i klustret. Kontrollera att statusen för alla noder är Klar:
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
Distribuera programmet
En Kubernetes-manifestfil definierar ett önskat tillstånd för klustret, till exempel vilka containeravbildningar som ska köras. I den här artikeln använder du ett manifest för att skapa alla objekt som behövs för att köra ASP.NET exempelprogrammet i en Windows Server-container. Det här manifestet innehåller en Kubernetes-distribution för ASP.NET exempelprogram och en extern Kubernetes-tjänst för åtkomst till programmet från Internet.
Det ASP.NET exempelprogrammet tillhandahålls som en del av .NET Framework-exempel och körs i en Windows Server-container. AKS kräver att Windows Server-containrar baseras på avbildningar av Windows Server 2019 eller senare. Kubernetes-manifestfilen måste också definiera en nodväljare för att tala om för AKS-klustret att köra ASP.NET exempelprogrammets podd på en nod som kan köra Windows Server-containrar.
Skapa en fil med namnet
sample.yaml
och kopiera följande 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
En uppdelning av YAML-manifestfiler finns i Distributioner och YAML-manifest.
Om du skapar och sparar YAML-filen lokalt kan du ladda upp manifestfilen till standardkatalogen i CloudShell genom att välja knappen Ladda upp/ladda ned filer och välja filen från det lokala filsystemet.
Distribuera programmet med kommandot kubectl apply och ange namnet på YAML-manifestet.
kubectl apply -f sample.yaml
Följande exempelutdata visar distributionen och tjänsten som har skapats:
deployment.apps/sample created service/sample created
Testa programmet
När programmet körs så exponerar en Kubernetes-tjänst programmets klientdel mot Internet. Den här processen kan ta ett par minuter att slutföra. Ibland kan det ta längre tid än några minuter att etablera tjänsten. Tillåt upp till 10 minuter för etablering.
Kontrollera statusen för de distribuerade poddarna med kommandot kubectl get pods . Gör så att alla poddar är
Running
innan du fortsätter.kubectl get pods
Övervaka förloppet med hjälp av kommandot kubectl get service med
--watch
argumentet .kubectl get service sample --watch
Initialt visar utdata EXTERNAL-IP för exempeltjänsten som väntande:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
När EXTERNAL-IP-adressen ändras från väntande till en faktisk offentlig IP-adress använder du
CTRL-C
för att stoppakubectl
-övervakningsprocessen. Följande exempelutdata visar en giltig offentlig IP-adress som tilldelats tjänsten:sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Se exempelappen i praktiken genom att öppna en webbläsare till tjänstens externa IP-adress.
Ta bort resurser
Om du inte planerar att gå igenom AKS-självstudien tar du bort klustret för att undvika azure-avgifter. Anropa cmdleten Remove-AzResourceGroup för att ta bort resursgruppen, containertjänsten och alla relaterade resurser.
Remove-AzResourceGroup -Name myResourceGroup
Kommentar
AKS-klustret skapades med systemtilldelad hanterad identitet (standardidentitetsalternativet som används i den här snabbstarten). Azure-plattformen hanterar den här identiteten, så den kräver inte borttagning.
Nästa steg
I den här snabbstarten distribuerade du ett Kubernetes-kluster och distribuerade sedan ett ASP.NET exempelprogram i en Windows Server-container till det. Det här exempelprogrammet är endast i demosyfte och representerar inte alla metodtips för Kubernetes-program. Vägledning om hur du skapar fullständiga lösningar med AKS för produktion finns i AKS-lösningsvägledning.
Om du vill veta mer om AKS och gå igenom ett komplett exempel på kod-till-distribution fortsätter du till självstudiekursen för Kubernetes-klustret.
Azure Kubernetes Service