Udostępnij za pośrednictwem


Tworzenie kontenerów systemu Windows Server

Dotyczy: Azure Local, wersja 23H2

W tym artykule opisano sposób wdrażania puli węzłów w istniejącym klastrze usługi AKS z kontenerami systemu Windows Server za pomocą interfejsu wiersza polecenia platformy Azure. Opisano w nim również sposób wdrażania przykładowej aplikacji ASP.NET 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 z pulą 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 wraz z pulą 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 na podstawie wersji kubernetes klastra. System Windows Server 2022 jest domyślnym systemem operacyjnym dla platformy Kubernetes w wersji 1.25.0 lub nowszej. System operacyjny Windows Server 2019 jest domyślnym systemem operacyjnym 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 Server 2022:

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

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ę na platformie Azure. Jeśli masz wiele subskrypcji platformy Azure, wybierz odpowiedni identyfikator subskrypcji przy użyciu polecenia az account set .

To polecenie pobiera plik 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. Pozwól, aby to polecenie było uruchamiane tak długo, jak chcesz uzyskać dostęp do klastra. Jeśli upłynął limit czasu polecenia, zamknij okno interfejsu wiersza polecenia, otwórz nowe, a następnie ponownie uruchom 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.

Nie uruchamiaj tej sesji i nawiąż połączenie z klastrem Kubernetes z innego wiersza polecenia/terminalu. 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ższe przykładowe dane wyjściowe pokazują 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.

Manifest YAML umożliwia utworzenie wszystkich obiektów wymaganych 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 jako część przykładów programu .NET Framework i działa w kontenerze systemu Windows Server. Usługa AKS wymaga, aby kontenery systemu Windows Server opierały się na obrazach systemu Windows Server 2019 lub nowszych. Plik manifestu platformy Kubernetes musi również zdefiniować selektor węzła, aby upewnić się, że zasobniki przykładowej aplikacji ASP.NET są zaplanowane na 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
    

Następujące przykładowe dane wyjściowe pokazują, że wdrożenie i usługa zostały pomyślnie utworzone:

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. Aprowizacja może potrwać do 10 minut.

  1. Monitoruj postęp 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 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
    

    Gdy adres EXTERNAL-IP zmieni się z oczekujące na adres IP, użyj CTRL-C, aby zatrzymać proces zegarka 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
    
  2. Zobacz przykładową aplikację w działaniu, 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 dostępności zewnętrznego adresu IP.

Usuwanie puli węzłów

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

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

Następne kroki

Omówienie usługi AKS włączonej przez usługę Arc