Tworzenie kontenerów systemu Windows Server

Dotyczy: Azure Stack HCI, wersja 23H2

W tym artykule użyjesz interfejsu wiersza polecenia platformy Azure do wdrożenia puli węzłów w istniejącym klastrze usługi AKS, który uruchamia kontenery systemu Windows Server. Przykładową aplikację ASP.NET wdrożysz również w kontenerze systemu Windows Server w klastrze.

Wymagania wstępne

Utwórz klaster usługi AKS zgodnie z instrukcjami w temacie How to create AKS clusters (Jak utworzyć klastry usługi AKS).

Dodawanie puli węzłów

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

Dodaj pulę węzłów z hostami kontenerów systemu Windows przy użyciu az aksarc nodepool add polecenia z parametrem --os-type Windows. Jeśli jednostka SKU systemu operacyjnego nie jest określona, pula węzłów jest ustawiona na domyślny system operacyjny oparty na wersji kubernetes klastra. Windows Server 2022 to domyślny system operacyjny dla platformy Kubernetes w wersji 1.25.0 lub nowszej. Windows Server 2019 to domyślny system operacyjny dla wcześniejszych wersji.

  • Aby użyć systemu Windows Server 2019, określ następujące parametry:
    • os-type ustaw wartość Windows.
    • os-sku ustaw wartość Windows2019.
  • Aby użyć systemu Windows Server 2022, określ następujące parametry:
    • os-type ustaw wartość Windows.
    • os-sku ustaw wartość Windows2022 (opcjonalnie).

Następujące polecenie tworzy nową pulę węzłów o nazwie $mynodepool i dodaje ją do $myAKSCluster jednego węzła systemu Windows 2019.

az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2019

Nawiązywanie połączenia z klastrem usługi AKS

Teraz możesz nawiązać połączenie z klastrem Kubernetes, uruchamiając az connectedk8s proxy polecenie z komputera lokalnego. Przed uruchomieniem tego polecenia upewnij się, że logujesz się do platformy Azure. Jeśli masz wiele subskrypcji platformy Azure, wybierz odpowiedni identyfikator subskrypcji przy użyciu polecenia az account set .

To polecenie pobiera narzędzie kubeconfig klastra Kubernetes na maszynę lokalną i otwiera kanał połączenia serwera proxy z lokalnym klastrem Kubernetes. Kanał jest otwarty tak długo, jak to polecenie jest uruchamiane. Niech to polecenie będzie uruchamiane tak długo, jak chcesz uzyskać dostęp do klastra. Jeśli polecenie zostanie upłynął limit czasu, zamknij okno interfejsu wiersza polecenia, otwórz nowe, a następnie uruchom ponownie polecenie.

Aby pomyślnie uruchomić następujące polecenie, musisz mieć uprawnienia Współautor w grupie zasobów, która hostuje klaster usługi AKS:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

Oczekiwane dane wyjściowe:

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using kubeconfig at .\aks-arc-kube-config
Press Ctrl+C to close proxy.

Zachowaj działanie tej sesji i połącz się z klastrem Kubernetes z innego terminalu/wiersza polecenia. Sprawdź, czy możesz nawiązać połączenie z klastrem Kubernetes, uruchamiając polecenie kubectl get. To polecenie zwraca listę węzłów klastra:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

Poniższy przykład danych wyjściowych przedstawia węzeł utworzony w poprzednich krokach. Upewnij się, że stan węzła to Gotowe:

NAME              STATUS   ROLES           AGE     VERSION
moc-lesdc78871d   Ready    control-plane   6d8h    v1.26.3
moc-lupeeyd0f8c   Ready    <none>          6d8h    v1.26.3
moc-ww2c8d5ranw   Ready    <none>          7m18s   v1.26.3

Wdrażanie aplikacji

Plik manifestu kubernetes definiuje żądany stan klastra, taki jak obrazy kontenerów do uruchomienia.

Za pomocą manifestu YAML można 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 usługę Kubernetes w celu uzyskania dostępu do aplikacji z Internetu.

Przykładowa aplikacja ASP.NET jest udostępniana w ramach przykładów .NET Framework i działa w kontenerze systemu Windows Server. Usługa AKS wymaga, aby kontenery systemu Windows Server bazły na obrazach systemu Windows Server 2019 lub nowszych. Plik manifestu kubernetes musi również zdefiniować selektor węzła , aby upewnić się, że zasobniki przykładowej aplikacji ASP.NET są zaplanowane w węźle, który może uruchamiać kontenery systemu 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.

  2. Wdróż aplikację przy użyciu polecenia kubectl apply i podaj nazwę manifestu YAML:

    kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
    

W poniższych przykładowych danych wyjściowych przedstawiono 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 aprowizacja usługi może potrwać dłużej niż kilka minut. Poczekaj do 10 minut na aprowizację.

  1. Monitorowanie postępu przy użyciu polecenia kubectl get service za pomocą argumentu --watch .

    kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
    

    Początkowo dane wyjściowe pokazują 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
    

    Gdy adres EXTERNAL-IP zmieni się z oczekujące na adres IP, użyj klawiszy CTRL-C, aby zatrzymać proces kubectl watch. 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
    
  2. Zobacz przykładową aplikację w akcji, otwierając przeglądarkę internetową na zewnętrzny adres IP i port przykładowej usługi.

    Zrzut ekranu przedstawiający przykładową aplikację ASP.NET.

    Jeśli podczas próby załadowania strony zostanie wyświetlony limit czasu połączenia, sprawdź, czy przykładowa aplikacja jest gotowa przy użyciu kubectl get pods --watch polecenia . Czasami kontener systemu Windows nie jest uruchamiany przez czas udostępnienia zewnętrznego adresu IP.

Usuwanie puli węzłów

Usuń pulę az akshybrid nodepool delete węzłów przy użyciu polecenia .

az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait

Następne kroki

W tym artykule wdrożono pulę węzłów systemu Windows w istniejącym klastrze usługi AKS i wdrożono w nim przykładową aplikację ASP.NET w kontenerze systemu Windows Server.