Bereitstellen von Windows-Anwendungen
Gilt für: AKS auf Azure Stack HCI 22H2, AKS unter Windows Server
In diesem Lernprogramm wird beschrieben, wie Sie eine ASP.NET Beispielanwendung in einem Windows Server-Container im Azure Kubernetes Service (AKS)-Cluster in AKS bereitstellen, die von Arc aktiviert sind, und testen und skalieren Sie Ihre Anwendung. Außerdem erfahren Sie, wie Sie einem Windows-Knoten zu einer Active Directory-Domäne beitreten.
In diesem Tutorial werden grundlegende Kenntnisse von Kubernetes-Konzepten vorausgesetzt. Weitere Informationen finden Sie unter Kubernetes Kernkonzepte für AKS, die von Azure Arc aktiviert sind.
Voraussetzungen
Stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllt haben:
- Ein Azure Kubernetes-Dienstcluster mit mindestens einem Windows-Workerknoten.
- Eine kubeconfig-Datei für den Zugriff auf den Cluster.
- Das PowerShell-Modul AksHci wird installiert.
Wenn Sie die Verfahren ausführen:
- Führen Sie die Befehle in einem PowerShell-Administratorfenster aus.
- Stellen Sie sicher, dass die betriebssystemspezifischen Workloads auf dem entsprechenden Containerhost verarbeitet werden. Wenn Ihr Kubernetes-Cluster eine Mischung aus Linux- und Windows-Workerknoten aufweist, können Sie entweder Knotenselektoren oder Taints und Tolerationen verwenden. Weitere Informationen finden Sie unter Verwenden von Knotenselektoren und Taints und Toleranzen.
Bereitstellen der Anwendung
Eine Kubernetes-Manifestdatei definiert einen gewünschten Zustand (Desired State) für den Cluster – also beispielsweise, welche Containerimages ausgeführt werden sollen. In diesen Verfahren wird ein Manifest verwendet, um alle Objekte zu erstellen, die zum Ausführen der ASP.NET Beispielanwendung in einem Windows Server-Container erforderlich sind. Dieses Manifest beinhaltet eine Kubernetes-Bereitstellung für die ASP.NET-Beispielanwendung und einen externen 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 Arc erfordert, dass Windows Server-Container auf Images von Windows Server 2019 basieren.
Die Kubernetes-Manifestdatei muss auch eine Knotenauswahl definieren, um Ihrem Cluster mitzuteilen, dass der Pod ihrer ASP.NET Beispielanwendung auf einem Knoten ausgeführt werden kann, der Windows Server-Container ausführen kann.
Erstellen Sie eine Datei mit dem Namen sample.yaml
, und kopieren/einfügen 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:
"beta.kubernetes.io/os": windows
containers:
- name: sample
image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
resources:
limits:
cpu: 1
memory: 800M
requests:
cpu: .1
memory: 300M
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
Stellen Sie die Anwendung mithilfe des kubectl apply
Befehls bereit, und geben Sie den Namen Ihres YAML-Manifests an:
kubectl apply -f sample.yaml
Die folgende Beispielausgabe zeigt, dass die Bereitstellung und der Dienst erfolgreich erstellt wurden:
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. Warten Sie in diesen Fällen bis zu 10 Minuten.
Um den Fortschritt zu überwachen, verwenden Sie den kubectl get service
Befehl mit dem --watch
Argument:
kubectl get service sample --watch
Zunächst wird die EXTERNAL-IP für den Beispieldienst als ausstehend angezeigt:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Sobald die externe IP-Adresse (EXTERNAL-IP) von pending (ausstehend) in eine tatsächliche öffentliche IP-Adresse geändert wurde, verwenden Sie CTRL-C
, um die kubectl
-Überwachung zu beenden. Die folgende Beispielausgabe zeigt eine gültige öffentliche IP-Adresse, die dem Dienst zugewiesen ist:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Öffnen Sie die externe IP-Adresse Ihres Diensts in einem Webbrowser, um die Beispielanwendung in Aktion zu sehen.
Wenn beim Laden der Seite ein Zeitüberschreitung der Verbindung auftritt, überprüfen Sie, ob die Beispiel-App bereit ist, indem Sie den kubectl get pods --watch
Befehl ausführen. Manchmal ist die externe IP-Adresse verfügbar, bevor der Windows-Container gestartet wird.
Skalieren von Anwendungspods
Wir haben ein einzelnes Replikat des Anwendungs-Front-Ends erstellt. Um die Anzahl und den Zustand von Pods in Ihrem Cluster anzuzeigen, verwenden Sie den Befehl kubectl get
wie folgt:
kubectl get pods -n default
Um die Anzahl von Pods in der Beispielbereitstellung zu ändern, verwenden Sie den Befehl kubectl scale
. Im folgenden Beispiel wird die Anzahl der Front-End-Pods auf 3 erhöht:
kubectl scale --replicas=3 deployment/sample
Führen Sie den Vorgang kubectl get pods
erneut aus, um zu überprüfen, ob die Pods erstellt wurden. Nach ca. einer Minute sind die zusätzlichen Pods in Ihrem Cluster verfügbar:
kubectl get pods -n default