Tutorial: Skalieren von Anwendungen in Azure Kubernetes Service (AKS)

Wenn Sie die vorherigen Tutorials durchgearbeitet haben, verfügen Sie über einen funktionsfähigen Kubernetes-Cluster sowie die Azure Store Front-App.

In diesem Lernprogramm skalieren Sie die Pods in der App, testen die automatische Skalierung von Pods und skalieren die Anzahl der Azure VM-Knoten, um die Kapazität des Clusters für das Hosten von Workloads zu ändern. Folgendes wird vermittelt:

  • Skalieren der Kubernetes-Knoten
  • Manuelles Skalieren von Kubernetes-Pods, die Ihre Anwendung ausführen
  • Konfigurieren Sie die Autoskalierung für Pods, die das Frontend der App ausführen.

Bevor Sie beginnen

In den vorherigen Tutorials haben Sie eine Anwendung in ein Containerimage gepackt, das Image in Azure Container Registry hochgeladen, einen AKS-Cluster erstellt, eine Anwendung im AKS-Cluster bereitgestellt und Azure Service Bus für die erneute Bereitstellung einer aktualisieren Anwendung verwendet. Wenn Sie diese Schritte noch nicht ausgeführt haben und dieses Tutorial durcharbeiten möchten, beginnen Sie mit Tutorial 1:Vorbereiten einer Anwendung für AKS.

Dieses Tutorial ändert die Anzahl der Pods und Knoten und kann die Rechenkosten erhöhen. Verwenden Sie eine Identität mit der Berechtigung zum Skalieren von AKS-Workloads und Knotenpools, z. B. Mitwirkender oder Besitzer für die Ressourcengruppe.

Für dieses Tutorial wird mindestens Version 2.34.1 der Azure-Befehlszeilenschnittstelle vorausgesetzt. Führen Sie az --version aus, um die Version zu ermitteln. Wenn Sie eine Installation durchführen oder ein Upgrade ausführen müssen, lesen Sie Azure CLI installieren.

Manuelles Skalieren von Pods

AKS-Desktop

  1. Bearbeiten Sie die Skalierungskonfiguration für order-service, indem Sie Skalierung>Deployment auswählen: order-service>Konfiguration bearbeiten>Anzahl der Replikate: 5 auswählen. Screenshot, der die Bearbeitung der Skalierungskonfiguration des order-service zeigt.

  2. Stellen Sie sicher, dass das Bereitstellungsupdate abgeschlossen ist, bevor Sie fortfahren.

  3. Zeigen Sie die Pods in Ihrem Cluster mit dem Befehl kubectl get an.

    kubectl get pods
    

    Die folgende Beispielausgabe zeigt die Pods, auf denen die Azure Store Front-App ausgeführt wird:

    NAME                               READY     STATUS     RESTARTS   AGE
    order-service-848767080-tf34m      1/1       Running    0          31m
    product-service-4019737227-2q2qz   1/1       Running    0          31m
    store-front-2606967446-2q2qz       1/1       Running    0          31m
    
  4. Ändern Sie die Anzahl der Pods im Deployment store-front manuell mithilfe des Befehls kubectl scale.

    kubectl scale --replicas=5 deployment.apps/store-front
    
  5. Mit dem Befehl kubectl get pods können Sie überprüfen, ob die zusätzlichen Pods erstellt wurden.

    kubectl get pods --selector app=store-front
    

    Die folgende Beispielausgabe zeigt die zusätzlichen Pods, auf denen die Azure-Store-Front-App ausgeführt wird:

    NAME                              READY     STATUS    RESTARTS   AGE
    store-front-3309479140-2hfh0      1/1       Running   0          3m
    store-front-3309479140-bzt05      1/1       Running   0          3m
    store-front-3309479140-fvcvm      1/1       Running   0          3m
    store-front-3309479140-hrbf2      1/1       Running   0          15m
    store-front-3309479140-qphz8      1/1       Running   0          3m
    

Pods automatisch skalieren

AKS-Desktop

  1. Wählen Sie im Project die Schaltfläche "Anwendung bereitstellen" >kubernetes YAML aus. Auswählen der Anwendungsquelle, Kubernetes YAML

  2. Kopieren Sie dieses YAML-Autoskalermanifest und die Ressourcenlimits und fügen Sie sie ein.

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: store-front-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: store-front
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
    
  3. Wählen Sie Weiter>Bereitstellen>Schließen aus. Screenshot, der das Einfügen in die YAML-Konfiguration zeigt.

  4. Wählen Sie Skalierung>Bereitstellung auswählen: store-front aus. Sie können sehen, dass der Skalierungsmodus jetzt auf HPA, Replikatgrenzen und CPU-Auslastung /Ziel festgelegt ist, die von der Konfiguration festgelegt ist. Screenshot der Übersicht zur AKS-Desktopskalierung, die den HPA-Modus für die Store-Front-Bereitstellung zeigt.

  5. Stellen Sie sicher, dass der HPA-Modus aktiviert ist und die Replikatgrenzen den Manifestwerten entsprechen.

Befehlszeile

Zum Verwenden der horizontalen Pod-Autoskalierung müssen für alle Container CPU-Anforderungen und -Grenzwerte festgelegt sein, und Pods müssen Anforderungen festgelegt haben. In der aks-store-quickstart-Bereitstellung fordert der Front-End-Container 1 m CPUs an, und es gilt ein Grenzwert von 1000 m CPUs.

Diese Ressourcenanforderungen und -grenzwerte sind so für jeden Container festgelegt, wie im folgenden VAML-Beispielcode gezeigt:

...
  containers:
  - name: store-front
    image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
    ports:
    - containerPort: 8080
      name: store-front
...
    resources:
      requests:
        cpu: 1m
...
      limits:
        cpu: 1000m
...

Pods mithilfe einer Manifestdatei automatisch skalieren

  1. Erstellen Sie eine Manifestdatei, um das Verhalten der Autoskalierung und die Ressourcengrenzwerte zu bestimmen, wie in der folgenden Kurzform-Beispielmanifestdatei aks-store-quickstart-hpa.yamlgezeigt:

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: store-front-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: store-front
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
    
  2. Wenden Sie die Manifestdatei für die Autoskalierung mithilfe des Befehls kubectl apply an.

    kubectl apply -f aks-store-quickstart-hpa.yaml
    
  3. Überprüfen Sie mit dem Befehl kubectl get hpa den Status der Autoskalierung.

    kubectl get hpa
    

    Nach einigen Minuten mit minimaler Last in der Azure Store Front-App sinkt die Anzahl von Podreplikaten auf 3. Sie können den Befehl kubectl get pods erneut verwenden, um zu sehen, wie die nicht benötigten Pods entfernt werden.

    Fahren Sie fort, wenn die TARGETS und REPLICAS Spalten das für store-front-hpa erwartete Autoskalierungsverhalten anzeigen.

Hinweis

Sie können das Kubernetes-based Event Driven Autoscaling-Add-On (KEDA) für AKS auf Ihrem Cluster aktivieren, um die Skalierung auf Basis der Anzahl der Ereignisse zu steuern, die verarbeitet werden müssen. Weitere Informationen finden Sie unter Aktivieren der vereinfachten Anwendungsautoskalierung mit dem Add-On Kubernetes Event-Driven Autoscaling (KEDA) (Vorschau).

Manuelles Skalieren von AKS-Knoten

Hinweis

Wenn Sie einen automatischen AKS-Cluster erstellt haben, gelten diese Schritte nicht, da die Clusterknoten automatisch skalieren.

Wenn Sie Ihren AKS Standard-Cluster mithilfe der Befehle in den vorherigen Lernprogrammen erstellt haben, verfügt Ihr Cluster über drei Knoten. Wenn Sie diesen Wert erhöhen oder verringern möchten, können Sie die Anzahl der Knoten manuell anpassen.

Im folgenden Beispiel wird die Anzahl der Knoten im Kubernetes-Cluster mit dem Namen "myAKSCluster" auf fünf erhöht. Diese Ausführung dieses Befehls dauert einige Minuten.

  • Skalieren Sie Ihre Clusterknoten mit dem Befehl az aks scale.

    Nachdem der Cluster erfolgreich skaliert wurde, ähnelt die Ausgabe der folgenden Beispielausgabe:

    az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster --query "[].{name:name,count:count}" -o table
    
    az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 5
    

    Nachdem der Cluster erfolgreich skaliert wurde, ähnelt Ihre Ausgabe der folgenden Beispielausgabe:

    "aadProfile": null,
    "addonProfiles": null,
    "agentPoolProfiles": [
      {
        ...
        "count": 5,
        "mode": "System",
        "name": "nodepool1",
        "osDiskSizeGb": 128,
        "osDiskType": "Managed",
        "osType": "Linux",
        "ports": null,
        "vmSize": "Standard_DS2_v2",
        "vnetSubnetId": null
        ...
      }
      ...
    ]
    

Sie können die Knoten in Ihrem Cluster auch automatisch skalieren. Weitere Informationen finden Sie unter Verwenden der Autoskalierung für Cluster mit Knotenpools.

Nächste Schritte

In diesem Tutorial haben Sie verschiedene Skalierungsfunktionen in Ihrem Kubernetes-Cluster verwendet. Sie haben Folgendes gelernt:

  • Manuelles Skalieren von Kubernetes-Pods, die Ihre Anwendung ausführen
  • Konfigurieren Sie die Autoskalierung für Pods, die das Frontend der App ausführen.
  • Manuelles Skalieren der Kubernetes-Knoten

Wenn Sie fertig sind, wählen Sie das Symbol "Löschen " aus, und wählen Sie in der Bestätigungsmeldung auch den Namespace löschen. Screenshot des Löschens des AKS-Desktopprojekts durch Klicken auf das Papierkorbsymbol.

Im nächsten Tutorial erfahren Sie, wie Sie ein Upgrade von Kubernetes in Ihrem AKS-Cluster durchführen.