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 Tutorial, Teil sechs von sieben, skalieren Sie die Pods in der App, testen Sie 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 der automatischen Skalierung von Pods, die das App-Front-End ausführen

Voraussetzungen

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.

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. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sei bei Bedarf unter Installieren der Azure CLI.

Manuelles Skalieren von Pods

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

    kubectl get pods
    

    Die folgende Beispielausgabe zeigt die Pods, die für die Azure Store Front-App ausgeführt werden:

    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
    
  2. Mit dem Befehl kubectl scale können Sie die Anzahl von Pods in der Bereitstellung von store-front manuell ändern.

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

    kubectl get pods
    

    Die folgende Beispielausgabe zeigt die zusätzlichen Pods, die für die Azure Store Front-App ausgeführt werden:

                                      READY     STATUS    RESTARTS   AGE
    store-front-2606967446-2q2qzc     1/1       Running   0          15m
    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
    

Automatisches Skalieren von Pods

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
...

Autoskalierung von Pods mithilfe einer Manifestdatei

  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 kubectl get pods erneut ausführen, um zu sehen, wie die nicht benötigten Pods entfernt werden.

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 Vereinfachte Anwendungsautoskalierung mit dem Add-On von Kubernetes-based Event Driven Autoscaling (KEDA) (Vorschau).

Manuelles Skalieren von AKS-Knoten

Wenn Sie Ihren Kubernetes-Cluster mithilfe der Befehle im vorherigen Tutorial erstellt haben, verfügt der Cluster über zwei 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 von Knoten im Kubernetes-Cluster myAKSCluster auf drei erhöht. Diese Ausführung dieses Befehls dauert einige Minuten.

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

    az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
    

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

    "aadProfile": null,
    "addonProfiles": null,
    "agentPoolProfiles": [
      {
        ...
        "count": 3,
        "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 der automatischen Skalierung von Pods, die das App-Front-End ausführen
  • Manuelles Skalieren der Kubernetes-Knoten

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