Bereitstellen von Windows-Anwendungen in AKS-Hybrid

Gilt für: AKS in Azure Stack HCI, AKS unter Windows Server

In diesem Tutorial erfahren Sie, wie Sie eine ASP.NET Beispielanwendung in einem Windows Server-Container im AKS-Hybridcluster (Azure Kubernetes Service) bereitstellen und dann Ihre Anwendung testen und skalieren. Außerdem erfahren Sie, wie Sie einen Windows-Knoten mit einer Active Directory-Domäne verbinden.

In diesem Tutorial werden grundlegende Kenntnisse von Kubernetes-Konzepten vorausgesetzt. Weitere Informationen finden Sie unter Kubernetes-Kernkonzepte für AKS-Hybrid.

Voraussetzungen

Stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllt haben:

Wenn Sie die Verfahren ausführen, gehen Sie wie folgt vor:

  • Führen Sie die Befehle in einem PowerShell-Verwaltungsfenster aus.
  • Stellen Sie sicher, dass die betriebssystemspezifischen Workloads auf dem entsprechenden Containerhost verarbeitet werden. Wenn Ihr Kubernetes-Cluster über eine Mischung aus Linux- und Windows-Workerknoten verfügt, können Sie entweder Knotenselektoren oder Taints und Toleranzen verwenden. Weitere Informationen finden Sie unter Verwenden von Knotenselektoren und Taints und Toleranzen.

Bereitstellen der Anwendung

Eine Kubernetes-Manifestdatei definiert einen gewünschten Zustand für den Cluster, z. B. 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 des .NET Framework-Beispiels bereitgestellt und in einem Windows Server-Container ausgeführt. AKS-Hybrid erfordert, dass Windows Server-Container auf Images von Windows Server 2019 basieren.

Mit der Kubernetes-Manifestdatei muss auch eine Knotenauswahl definiert werden. So wird Ihrem AKS-Cluster mitgeteilt, dass der Pod Ihrer ASP.NET-Beispielanwendung auf einem Knoten ausgeführt werden soll, für den die Ausführung von Windows Server-Containern möglich ist.

Erstellen Sie eine Datei mit dem Namen 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:
        "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 mit dem kubectl apply Befehl bereit, und geben Sie den Namen Ihres YAML-Manifests an:

kubectl apply -f sample.yaml

Die folgende Beispielausgabe zeigt, wie 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.

Verwenden Sie zum Überwachen des Fortschritts den Befehl kubectl get service mit dem Argument --watch.

kubectl get service sample --watch

Zunächst wird 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.

Screenshot der Startseite für die ASP.NET Beispielanwendung für Windows, die in einem AKS-Cluster bereitgestellt wird.

Wenn die Verbindung beim Laden der Seite ein Timeout aufweist, ü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 erneut aus kubectl get pods , um zu überprüfen, ob die Pods erstellt wurden. Nach etwa einer Minute sind die zusätzlichen Pods in Ihrem Cluster verfügbar.

kubectl get pods -n default

Nächste Schritte