Wdrażanie kontenera systemu Windows Server w klastrze usługi Azure Kubernetes Service (AKS) przy użyciu programu PowerShell

Azure Kubernetes Service (AKS) to zarządzana usługa platformy Kubernetes, która umożliwia szybkie wdrażanie klastrów i zarządzanie nimi. W tym artykule wdrożysz klaster usługi AKS z kontenerami systemu Windows Server za pomocą programu Azure PowerShell. W klastrze wdrożysz również przykładową aplikację ASP.NET w kontenerze systemu Windows Server.

Uwaga / Notatka

Aby rozpocząć szybkie aprowizowanie klastra usługi AKS, ten artykuł zawiera kroki wdrażania klastra z ustawieniami domyślnymi tylko do celów ewaluacyjnych. Przed wdrożeniem klastra gotowego do produkcji zalecamy zapoznanie się z naszą architekturą referencyjną punktu odniesienia, aby wziąć pod uwagę, jak jest ona zgodna z wymaganiami biznesowymi.

Zanim rozpoczniesz

Ten szybki start zakłada, że masz podstawową wiedzę na temat pojęć związanych z platformą Kubernetes. Aby uzyskać więcej informacji, zobacz temat Kubernetes core concepts for Azure Kubernetes Service (AKS) (Kubernetes — podstawowe pojęcia dotyczące usługi Azure Kubernetes Service (AKS)).

Tworzenie grupy zasobów

Grupa zasobów platformy Azure to grupa logiczna, w której zasoby platformy Azure są wdrażane i zarządzane. Podczas tworzenia grupy zasobów zostanie wyświetlony monit o określenie lokalizacji. Ta lokalizacja polega na tym, że metadane grupy zasobów są przechowywane i gdzie zasoby są uruchamiane na platformie Azure, jeśli nie określisz innego regionu podczas tworzenia zasobów.

  • Utwórz grupę zasobów przy użyciu polecenia New-AzResourceGroup cmdlet. Poniższy przykład tworzy grupę zasobów o nazwie myResourceGroup w regionie eastus .

    New-AzResourceGroup -Name myResourceGroup -Location eastus
    

    Następujące przykładowe dane wyjściowe pokazują, że grupa zasobów została pomyślnie utworzona:

    ResourceGroupName : myResourceGroup
    Location          : eastus
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourceGroups/myResourceGroup
    

Utwórz klaster AKS

W tej sekcji utworzymy klaster usługi AKS z następującą konfiguracją:

  • Klaster jest skonfigurowany z dwoma węzłami w celu zapewnienia, że działa niezawodnie. Węzeł to maszyna wirtualna platformy Azure (VM), która uruchamia komponenty węzła Kubernetes i środowisko uruchomieniowe kontenera.
  • Parametry -WindowsProfileAdminUserName i -WindowsProfileAdminUserPassword ustawiają poświadczenia administratora dla wszystkich węzłów systemu Windows Server w klastrze i muszą spełniać wymagania dotyczące złożoności hasła systemu Windows Server.
  • Pula węzłów używa metody VirtualMachineScaleSets.

Wykonaj następujące kroki, aby utworzyć klaster usługi AKS za pomocą programu Azure PowerShell:

  1. Utwórz poświadczenia administratora dla kontenerów systemu Windows Server przy użyciu następującego polecenia. To polecenie wyświetla monit o wprowadzenie znaku WindowsProfileAdminUserName i WindowsProfileAdminUserPassword. Hasło musi zawierać co najmniej 14 znaków i spełniać wymagania dotyczące złożoności hasła systemu Windows Server.

    $AdminCreds = Get-Credential `
        -Message 'Please create the administrator credentials for your Windows Server containers'
    
  2. Utwórz klaster za pomocą polecenia cmdlet New-AzAksCluster i określ parametry WindowsProfileAdminUserName oraz WindowsProfileAdminUserPassword.

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

    Po kilku minutach polecenie zostanie wykonane i zwróci informacje o klastrze w formacie JSON. Czasami aprowizacja klastra może potrwać dłużej niż kilka minut. Konfiguracja może zająć do 10 minut.

    Jeśli wystąpi błąd weryfikacji hasła, a ustawione hasło spełnia wymagania dotyczące długości i złożoności, spróbuj utworzyć grupę zasobów w innym regionie. Następnie spróbuj utworzyć klaster przy użyciu nowej grupy zasobów.

    Jeśli nie określisz nazwy użytkownika i hasła administratora podczas tworzenia puli węzłów, nazwa użytkownika zostanie ustawiona na azureuser , a hasło zostanie ustawione na wartość losową. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące systemu Windows Server.

    Nie można zmienić nazwy użytkownika administratora, ale można zmienić hasło administratora używane przez klaster usługi AKS dla węzłów systemu Windows Server przy użyciu polecenia az aks update. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące systemu Windows Server.

    Aby uruchomić klaster usługi AKS obsługujący pule węzłów dla kontenerów systemu Windows Server, klaster musi używać polityki sieciowej korzystającej z wtyczki sieciowej Azure CNI (advanced). Parametr -NetworkPlugin azure określa usługę Azure CNI.

Dodaj pulę węzłów

Domyślnie klaster AKS jest tworzony z puli węzłów, która może uruchamiać kontenery Linuksa. Należy dodać kolejną pulę węzłów, która może uruchamiać kontenery systemu Windows Server wraz z pulą węzłów systemu Linux.

Aby utworzyć pulę węzłów systemu Windows, należy określić obsługiwane OsType i OsSku. Skorzystaj z informacji w poniższej tabeli, aby określić, która z nich jest odpowiednia dla klastra:

OsType OsSku Default Obsługiwane wersje K8s Szczegóły
windows Windows2025 Wartość domyślna w K8s 1.36+ 1.32+ Zaktualizowane wartości domyślne: containerd 2.0, obraz generacji 2 jest używany domyślnie. Wymagana jest konfiguracja FIPS — uwzględnij -EnableFIPS podczas tworzenia puli węzłów.
windows Windows2022 Wartość domyślna w K8s 1.25-1.35 Niedostępne w K8s 1.37+ Przechodzi na emeryturę w czerwcu 2028 r. Zaktualizowane wartości domyślne: domyślnie włączono standard FIPS.

Windows Server 2025 to domyślny system operacyjny dla platformy Kubernetes w wersji 1.36 lub nowszej. Windows Server 2022 jest wartością domyślną dla platformy Kubernetes w wersji 1.25-1.35. Jeśli nie określisz konkretnej jednostki SKU systemu operacyjnego, platforma Azure utworzy nową pulę węzłów z domyślną jednostkę SKU dla wersji rozwiązania Kubernetes używanej przez klaster.

Ważne

Od 30 czerwca 2028 r. Azure Kubernetes Service (AKS) nie obsługuje już pul węzłów Windows Server 2022. Windows Server 2022 nie jest obsługiwana w rozwiązaniu Kubernetes w wersji 1.37 lub nowszej. Począwszy od 30 czerwca 2029 r., usługa AKS usunie wszystkie istniejące obrazy węzłów dla Windows Server 2022, co oznacza, że operacje skalowania zakończy się niepowodzeniem. Aby uzyskać więcej informacji na temat tego wycofania, zobacz zgłoszenie GitHub dotyczące wycofania i ogłoszenie o wycofaniu na platformie Azure Updates. Aby być na bieżąco z ogłoszeniami i aktualizacjami, postępuj zgodnie z informacjami o wersji usługi AKS.

  • Dodaj pulę węzłów systemu Windows Server za pomocą polecenia cmdlet New-AzAksNodePool. Następujące polecenie tworzy nową pulę węzłów o nazwie npwin i dodaje ją do folderu myAKSCluster. Polecenie używa również domyślnej podsieci w domyślnej sieci wirtualnej utworzonej podczas uruchamiania polecenia New-AzAksCluster. Pule węzłów systemu Windows Server 2025 wymagają obrazu z włączoną obsługą standardu FIPS, więc następujące polecenie zawiera -EnableFIPS:

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

Połącz się z klastrem

Do zarządzania klastrami Kubernetes używasz narzędzia kubectl, klienta wiersza polecenia Kubernetes. Jeśli korzystasz z usługi Azure Cloud Shell, narzędzie kubectl jest już zainstalowane. Jeśli chcesz zainstalować kubectl lokalnie, możesz użyć Install-AzAzAksCliTool polecenia cmdlet .

  1. Skonfiguruj kubectl, aby przy użyciu polecenia cmdlet nawiązać połączenie z klastrem Kubernetes Import-AzAksCredential. To polecenie pobiera poświadczenia i konfiguruje Kubernetes CLI do ich użycia.

    Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
    
  2. Sprawdź połączenie z klastrem przy użyciu polecenia kubectl get, które zwraca listę węzłów klastra.

    kubectl get nodes -o wide
    

    Poniższe przykładowe dane wyjściowe pokazują wszystkie węzły w klastrze. Upewnij się, że stan wszystkich węzłów to Gotowe:

    NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION      CONTAINER-RUNTIME
    aks-nodepool1-20786768-vmss000000   Ready    agent   22h   v1.33.12   10.224.0.4    <none>        Ubuntu 22.04.5 LTS               5.15.0-1116-azure   containerd://1.7.33-1
    aks-nodepool1-20786768-vmss000001   Ready    agent   22h   v1.33.12   10.224.0.33   <none>        Ubuntu 22.04.5 LTS               5.15.0-1116-azure   containerd://1.7.33-1
    aksnpwin000000                      Ready    agent   20h   v1.33.12   10.224.0.62   <none>        Windows Server 2025 Datacenter   10.0.26100.32995    containerd://2.0.4+azure
    

Wdrażanie aplikacji

Plik manifestu Kubernetes definiuje żądany stan klastra, na przykład jakie obrazy kontenerów mają być uruchomione. W tym artykule użyjesz manifestu, aby utworzyć wszystkie obiekty potrzebne do uruchomienia przykładowej aplikacji ASP.NET w kontenerze systemu Windows Server. Ten manifest obejmuje wdrożenie platformy Kubernetes dla przykładowej aplikacji ASP.NET oraz zewnętrzną usługę Kubernetes w celu uzyskania dostępu do aplikacji z Internetu.

Przykładowa aplikacja ASP.NET jest częścią przykładów platformy .NET Framework i działa w kontenerze Windows Server. Usługa AKS wymaga, aby kontenery systemu Windows Server opierały się na obrazach systemu Windows Server 2022 lub nowszych. Plik manifestu Kubernetes musi również zdefiniować selektor węzła, aby poinformować klaster AKS o uruchomieniu poda przykładowej aplikacji ASP.NET na węźle, który może uruchamiać kontenery Windows Server.

  1. Utwórz plik o nazwie sample.yaml i skopiuj go w następującej definicji YAML:

    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
    

    Aby uzyskać podział plików manifestu YAML, zobacz Wdrożenia i manifesty YAML.

    Jeśli tworzysz i zapisujesz plik YAML lokalnie, możesz przekazać plik manifestu do katalogu domyślnego w programie CloudShell, wybierając przycisk Przekaż/Pobierz pliki i wybierając plik z lokalnego systemu plików.

  2. Wdróż aplikację przy użyciu kubectl apply polecenia i określ nazwę manifestu YAML.

    kubectl apply -f sample.yaml
    

    Następujące przykładowe dane wyjściowe pokazują pomyślne utworzenie wdrożenia i usługi:

    deployment.apps/sample created
    service/sample created
    

Testowanie aplikacji

Podczas uruchamiania aplikacji usługa Kubernetes uwidacznia fronton aplikacji w Internecie. Ten proces może potrwać kilka minut. Czasami udostępnienie usługi może potrwać dłużej niż kilka minut. Konfiguracja może zająć do 10 minut.

  1. Sprawdź stan wdrożonych zasobników za pomocą polecenia kubectl get pods. Upewnij się, że wszystkie zasobniki są Running przed kontynuowaniem.

    kubectl get pods
    
  2. Monitoruj postęp za pomocą kubectl get service polecenia z argumentem --watch .

    kubectl get service sample --watch
    

    Początkowo dane wyjściowe przedstawiają adres EXTERNAL-IP dla przykładowej usługi jako oczekujące:

    NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
    sample             LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s
    
  3. Gdy adres EXTERNAL-IP zmieni się z w trakcie oczekiwania na rzeczywisty publiczny adres IP, użyj CTRL-C do zatrzymania procesu monitorowania kubectl.

    Następujące przykładowe dane wyjściowe przedstawiają prawidłowy publiczny adres IP przypisany do usługi:

    sample  LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m
    
  4. Zobacz przykładową aplikację w działaniu, otwierając przeglądarkę internetową na zewnętrzny adres IP usługi.

    Zrzut ekranu przedstawiający przechodzenie do przykładowej aplikacji ASP.NET.

Usuwanie zasobów

Jeśli nie planujesz przechodzenia przez samouczek usługi AKS, usuń klaster, aby uniknąć naliczania opłat za platformę Azure.

  • Usuń grupę zasobów, usługę kontenera i wszystkie powiązane zasoby przy użyciu Remove-AzResourceGroup polecenia cmdlet .

    Remove-AzResourceGroup -Name myResourceGroup
    

    Uwaga / Notatka

    Klaster usługi AKS został utworzony przy użyciu tożsamości zarządzanej przypisanej przez system (domyślna opcja tożsamości używana w tym szybkim starcie). Platforma Azure zarządza tą tożsamością, więc nie wymaga usunięcia.

Dalsze kroki

W tym szybkim przewodniku wdrożono klaster Kubernetes, a następnie umieszczono w nim przykładową aplikację ASP.NET w kontenerze Windows Server. Ta przykładowa aplikacja służy tylko do celów demonstracyjnych i nie reprezentuje wszystkich najlepszych rozwiązań dla aplikacji Kubernetes. Aby uzyskać wskazówki dotyczące tworzenia pełnych rozwiązań za pomocą usługi AKS dla środowiska produkcyjnego, zobacz Wskazówki dotyczące rozwiązania AKS.

Aby dowiedzieć się więcej na temat usługi AKS i zapoznać się z kompletnym przykładem kodu do wdrożenia, przejdź do samouczka dotyczącego klastra Kubernetes.