Dela via


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).

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 kravenwindows Server-lösenordskomplexitet.
  • Nodpoolen använder VirtualMachineScaleSets.

Följ dessa steg för att skapa AKS-klustret med Azure PowerShell:

  1. 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 och WindowsProfileAdminUserPassword. 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'
    
  2. Skapa klustret med cmdleten New-AzAksCluster och ange parametrarna WindowsProfileAdminUserName och WindowsProfileAdminUserPassword .

    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 .

  1. 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
    
  2. 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.

  1. 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.

  2. 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.

  1. 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
    
  2. Ö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 stoppa kubectl-ö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
    
  3. Se exempelappen i praktiken genom att öppna en webbläsare till tjänstens externa IP-adress.

    Skärmbild av att bläddra till ASP.NET exempelprogram.

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.