Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: AKS auf Azure Local
In diesem Artikel wird beschrieben, wie Sie azure CLI verwenden, um einen Windows-Knotenpool in einem vorhandenen AKS-Cluster bereitzustellen, um Windows Server-Container auszuführen. Im Artikel wird auch beschrieben, wie Sie eine Beispielanwendung ASP.NET in einem Windows Server-Container im Cluster bereitstellen.
Voraussetzungen
Erstellen Sie einen AKS-Cluster nach den Anweisungen zum Erstellen von AKS-Clustern.
Von Bedeutung
Windows Server-Knotenpools müssen entweder mit dem Windows Server-Abonnement oder dem Azure-Hybridvorteil lizenziert werden, wie unter Aktivieren von Windows Server-VMs auf Azure Local beschrieben.
Hinzufügen eines Windows-Knotenpools
Standardmäßig wird ein Kubernetes-Cluster mit einem Knotenpool erstellt, der Linux-Container ausführen kann. Ab der lokalen Azure 2509-Version ist das Windows-Knotenpoolfeature standardmäßig deaktiviert. Sie müssen zuerst das Windows-Knotenpoolfeature aktivieren, bevor Sie einen Windows-Knotenpool erstellen können. Weitere Informationen finden Sie unter Aktivieren von Windows-Knotenpools.
Fügen Sie einen Knotenpool mit Windows-Containerhosts mithilfe des az aksarc nodepool add
Befehls mit dem Parameter --os-type Windows
hinzu. Wenn die SKU des Betriebssystems nicht angegeben ist, wird der Knotenpool auf das Standardbetriebssystem basierend auf der Kubernetes-Version des Clusters festgelegt. Windows Server 2022 ist das Standardbetriebssystem für Kubernetes-Versionen 1.25.0 und höher.
Um Windows Server 2022 zu verwenden, geben Sie die folgenden Parameter an:
- Legen Sie
--os-type
aufWindows
fest. -
--os-sku
Windows2022
auf (optional) festgelegt.
Der folgende Befehl erstellt einen neuen Knotenpool namens $mynodepool
und fügt ihn mit einem Windows Server 2022-Knoten hinzu $myAKSCluster
:
az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2022
Herstellen einer Verbindung mit dem AKS-Cluster
Jetzt können Sie eine Verbindung mit Ihrem Kubernetes-Cluster herstellen, indem Sie den az connectedk8s proxy
Befehl von Ihrem lokalen Computer aus ausführen. Stellen Sie sicher, dass Sie sich bei Azure anmelden, bevor Sie diesen Befehl ausführen. Wenn Sie über mehrere Azure-Abonnements verfügen, wählen Sie die entsprechende Abonnement-ID mit dem Befehl "az account set " aus.
Der folgende Befehl lädt die Kubeconfig Ihres Kubernetes-Clusters auf Ihren lokalen Computer herunter und öffnet einen Proxyverbindungskanal zu Ihrem lokalen Kubernetes-Cluster. Der Kanal ist geöffnet, solange dieser Befehl ausgeführt wird. Lassen Sie diesen Befehl so lange ausführen, wie Sie auf Ihren Cluster zugreifen möchten. Wenn der Befehl abläuft, schließen Sie das CLI-Fenster, öffnen Sie ein neues Fenster, und führen Sie dann den Befehl erneut aus.
Sie müssen über Die Berechtigung "Mitwirkender" für die Ressourcengruppe verfügen, die den AKS-Cluster hosten, um den folgenden Befehl erfolgreich auszuführen:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Erwartete Ausgabe:
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.
Führen Sie diese Sitzung aus, und stellen Sie eine Verbindung mit Ihrem Kubernetes-Cluster über eine andere Terminal-/Eingabeaufforderung her. Stellen Sie sicher, dass Sie eine Verbindung mit Ihrem Kubernetes-Cluster herstellen können, indem Sie den kubectl get
Befehl ausführen. Dieser Befehl gibt eine Liste der Clusterknoten zurück:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
Die folgende Beispielausgabe zeigt den Knoten, der in den vorherigen Schritten erstellt wurde. Stellen Sie sicher, dass der Knotenstatus Bereit lautet:
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
Bereitstellen der Beispielanwendung
Eine Kubernetes-Manifestdatei definiert den gewünschten Zustand (Desired State) eines Clusters – also beispielsweise, welche Containerimages ausgeführt werden sollen.
Sie können ein YAML-Manifest verwenden, um alle Objekte zu erstellen, die zum Ausführen der ASP.NET Beispielanwendung in einem Windows Server-Container erforderlich sind. Dieses Manifest enthält eine Kubernetes-Bereitstellung für die ASP.NET Beispielanwendung und einen Kubernetes-Dienst für den Zugriff auf die Anwendung über das Internet.
Die ASP.NET Beispielanwendung wird als Teil der .NET Framework-Beispiele bereitgestellt und in einem Windows Server-Container ausgeführt. AKS erfordert, dass Windows Server-Container auf Images von Windows Server 2019 oder höher basieren. Die Kubernetes-Manifestdatei muss auch eine Knotenauswahl definieren, um sicherzustellen, dass die Pods ihrer ASP.NET Beispielanwendung auf einem Knoten geplant sind, der Windows Server-Container ausführen kann.
Erstellen Sie eine Datei mit dem Namen "sample.yaml ", und fügen Sie die folgende YAML-Definition ein:
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
Eine Aufschlüsselung der YAML-Manifestdateien finden Sie unter Bereitstellungen und YAML-Manifeste.
Stellen Sie die Anwendung über den Befehl kubectl apply bereit, und geben Sie den Namen Ihres YAML-Manifests an:
kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
Die folgende Beispielausgabe zeigt, dass die Bereitstellung und der Dienst erfolgreich erstellt wurden:
deployment.apps/sample created
service/sample created
Testen der App
Wenn die Anwendung ausgeführt wird, macht ein Kubernetes-Dienst das Anwendungs-Front-End im Internet verfügbar. Dieser Vorgang kann einige Minuten dauern. Gelegentlich kann der Dienst länger als ein paar Minuten dauern, bis er bereitgestellt wird. Bis zu 10 Minuten für die Bereitstellung zulassen.
Verwenden Sie zum Überwachen des Fortschritts den Befehl kubectl get service mit dem Argument
--watch
:kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
Zunächst zeigt die Ausgabe die EXTERNAL-IP für den Beispieldienst als ausstehend an:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Wenn sich die
EXTERNE-IP-Adresse von ausstehend in eine IP-Adresse ändert, verwenden Sie STRG-C, um den kubectl watch-Prozess zu beenden. Die folgende Beispielausgabe zeigt eine gültige öffentliche IP-Adresse, die dem Dienst zugewiesen ist:sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Sehen Sie sich die Beispiel-App in Aktion an, indem Sie einen Webbrowser für die externe IP-Adresse und den Port des Beispieldiensts öffnen.
Wenn beim Laden der Seite ein Verbindungstimeout angezeigt wird, sollten Sie überprüfen, ob die Beispielanwendung mit dem
kubectl get pods --watch
befehl bereit ist. Manchmal wird der Windows-Container nicht gestartet, wenn Ihre externe IP-Adresse verfügbar ist.
Knotenpool löschen
Löschen Sie den Knotenpool mithilfe des az aksarc nodepool delete
Befehls:
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait