Erstellen von Windows Server-Containern
Gilt für: Azure Stack HCI, Version 23H2
In diesem Artikel verwenden Sie die Azure CLI, um einen Knotenpool in einem vorhandenen AKS-Cluster bereitzustellen, der Windows Server-Container ausführt. Sie stellen auch eine ASP.NET-Beispielanwendung in einem Windows Server-Container für den Cluster bereit.
Voraussetzungen
Erstellen Sie einen AKS-Cluster gemäß den Anweisungen unter Erstellen von AKS-Clustern.
Hinzufügen eines Knotenpools
Standardmäßig wird ein Kubernetes-Cluster mit einem Knotenpool erstellt, in dem Linux-Container ausgeführt werden können. Sie müssen einen weiteren Knotenpool hinzufügen, der Windows Server-Container neben dem Linux-Knotenpool ausführen kann.
Fügen Sie mithilfe des Befehls mit dem az aksarc nodepool add
Parameter --os-type Windows
einen Nodepool mit Windows-Containerhosts hinzu. Wenn die Betriebssystem-SKU nicht angegeben ist, wird der Knotenpool basierend auf der Kubernetes-Version des Clusters auf das Standardbetriebssystem festgelegt. Das Standardbetriebssystem für Kubernetes Versionen 1.25.0 und höher ist Windows Server 2022. Für frühere Versionen ist das Standardbetriebssystem Windows Server 2019.
- Um Windows Server 2019 zu verwenden, geben Sie die folgenden Parameter an:
- Legen Sie
os-type
aufWindows
fest. - Legen Sie
os-sku
aufWindows2019
fest.
- Legen Sie
- Um Windows Server 2022 zu verwenden, geben Sie die folgenden Parameter an:
- Legen Sie
os-type
aufWindows
fest. os-sku
aufWindows2022
(optional) festgelegt.
- Legen Sie
Der folgende Befehl erstellt einen neuen Knotenpool namens $mynodepool
und fügt ihn mit einem Windows 2019-Knoten hinzu $myAKSCluster
.
az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2019
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 auf Ihrem lokalen Computer 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.
Dieser Befehl lädt 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. Führen Sie den Befehl so lange aus, wie Sie auf Ihren Cluster zugreifen möchten. Wenn für den Befehl ein Zeitüberschreitung auftritt, schließen Sie das CLI-Fenster, öffnen Sie ein neues, und führen Sie den Befehl dann erneut aus.
Sie müssen über die Berechtigungen Mitwirkender für die Ressourcengruppe verfügen, die den AKS-Cluster hostet, um den folgenden Befehl erfolgreich ausführen zu können:
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.
Lassen Sie diese Sitzung ausgeführt, und stellen Sie über ein anderes Terminal/eine andere Eingabeaufforderung eine Verbindung mit Ihrem Kubernetes-Cluster her. Stellen Sie sicher, dass Sie eine Verbindung mit Ihrem Kubernetes-Cluster herstellen können, indem Sie den Befehl kubectl get ausführen. Dieser Befehl gibt eine Liste der Clusterknoten zurück:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
Das folgende Ausgabebeispiel 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 Anwendung
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 verlangt, 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, auf dem Windows Server-Container ausgeführt werden können.
Erstellen Sie eine Datei namens sample.yaml , und kopieren Sie die folgende YAML-Definition:
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
In der folgende Beispielausgabe sind die erfolgreich erstellten Bereitstellungen und Dienste aufgeführt:
deployment.apps/sample created
service/sample created
Testen der Anwendung
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 die Bereitstellung des Diensts länger als ein paar Minuten dauern. Geben Sie der Bereitstellung bis zu 10 Minuten Zeit.
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 EXTERNAL-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 Sie beim Versuch, die Seite zu laden, ein Verbindungstimeout erhalten, sollten Sie mit dem Befehl überprüfen, ob die
kubectl get pods --watch
Beispiel-App bereit ist. Manchmal ist der Windows-Container noch nicht gestartet, wenn Ihre externe IP-Adresse verfügbar ist.
Nodepool löschen
Löschen Sie den Nodepool mithilfe des az akshybrid nodepool delete
Befehls.
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait
Nächste Schritte
In diesem Artikel haben Sie einen Windows-Knotenpool in einem vorhandenen AKS-Cluster und eine ASP.NET Beispielanwendung in einem Windows Server-Container bereitgestellt.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für