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.
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.
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.
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
Zobacz przykładową aplikację w działaniu, otwierając przeglądarkę internetową na zewnętrzny adres IP i port przykładowej usługi.
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