Zelfstudie: Toepassingen schalen in Azure Kubernetes Service (AKS)

Als u de vorige zelfstudies hebt gevolgd, hebt u een werkend Kubernetes-cluster en een Azure Store Front-app.

In deze zelfstudie schaalt u de pods in de app uit, probeert u pods automatisch schalen en schaalt u het aantal Azure VM-knooppunten om de capaciteit van het cluster voor het hosten van workloads te wijzigen. U leert het volgende:

  • Schaal de Kubernetes-knooppunten.
  • Schaal de Kubernetes-pods waarop uw applicatie wordt uitgevoerd handmatig.
  • Configureer automatisch schalende pods waarop de front-end van de app draait.

Voordat u begint

In eerdere zelfstudies hebt u een toepassing verpakt in een containerinstallatiekopie, de installatiekopie geüpload naar Azure Container Registry, een AKS-cluster gemaakt, een toepassing geïmplementeerd en Azure Service Bus gebruikt om een bijgewerkte toepassing opnieuw te implementeren. Als u deze stappen nog niet hebt voltooid en u deze wilt volgen, begint u met zelfstudie 1: De toepassing voorbereiden voor AKS.

Deze tutorial past het aantal pods en knooppunten aan en kan de computekosten verhogen. Gebruik een identiteit met machtigingen voor het schalen van AKS-workloads en -knooppuntgroepen, zoals Inzender of Eigenaar voor de resourcegroep.

Voor deze zelfstudie is Azure CLI versie 2.34.1 of hoger vereist. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Pods handmatig schalen

AKS-bureaublad

  1. Bewerk de schaalconfiguratie voor de order-service door Schalen>Selecteer implementatie: order-service>Configuratie bewerken>Aantal replica's: 5 te selecteren. Schermopname van het bewerken van de schaalconfiguratie van de orderservice.

  2. Controleer of de implementatie-update is voltooid voordat u doorgaat.

  3. Bekijk de pods in uw cluster met behulp van de kubectl get opdracht.

    kubectl get pods
    

    In de volgende voorbeelduitvoer ziet u de pods waarop de Azure Store Front-app wordt uitgevoerd:

    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. Wijzig handmatig het aantal pods in de store-front-implementatie met behulp van de kubectl scale opdracht.

    kubectl scale --replicas=5 deployment.apps/store-front
    
  5. Controleer of de extra pods zijn gemaakt met behulp van de kubectl get pods opdracht.

    kubectl get pods --selector app=store-front
    

    In de volgende voorbeelduitvoer ziet u de extra pods waarop de Azure Store Front-app wordt uitgevoerd:

    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 schalen

AKS-bureaublad

  1. Selecteer in het project de knop Applicatie implementeren>Kubernetes YAML. Selecteer de toepassingsbron, Kubernetes YAML

  2. Kopieer en plak dit YAML-manifest voor automatische schaalaanpassing en resourcelimieten.

    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. Selecteer Volgende>Implementeren>Sluiten. Schermafbeelding waarop het plakken in de YAML-configuratie te zien is.

  4. Selecteer Schalen>, implementatie selecteren: store-front. U kunt zien dat de schaalmodus nu is ingesteld op HPA, replicagrenzen en CPU-gebruik/doel dat door de configuratie is ingesteld. Schermafbeelding van het overzicht van AKS-bureaubladschaling, waarop de HPA-modus voor de store-front-implementatie te zien is.

  5. Controleer of de HPA-modus is ingeschakeld en of de replicagrenzen overeenkomen met de manifestwaarden.

Opdrachtregel

Als u de horizontale Pod Autoscaler wilt gebruiken, moeten voor alle containers CPU-verzoeken en -limieten zijn gedefinieerd en moeten voor pods verzoeken zijn opgegeven. In de aks-store-quickstart implementatie vraagt de front-endcontainer 1m CPU aan met een limiet van 1000m CPU.

Deze resourceaanvragen en -limieten worden gedefinieerd voor elke container, zoals wordt weergegeven in het volgende verkorte voorbeeld van YAML:

...
  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 automatisch schalen met behulp van een manifestbestand

  1. Maak een manifestbestand om het gedrag van automatische schaalaanpassing en resourcelimieten te definiëren, zoals wordt weergegeven in het volgende verkorte voorbeeldmanifestbestand aks-store-quickstart-hpa.yaml:

    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. Pas het manifestbestand voor automatisch schalen toe met behulp van de kubectl apply opdracht.

    kubectl apply -f aks-store-quickstart-hpa.yaml
    
  3. Controleer de status van de automatische schaalaanpassing met behulp van de kubectl get hpa opdracht.

    kubectl get hpa
    

    Na een paar minuten daalt het aantal podreplica's bij minimale belasting van de Azure Store Front-app tot drie. U kunt de opdracht opnieuw gebruiken kubectl get pods om te zien dat de overbodige pods worden verwijderd.

    Ga door wanneer de kolommen TARGETS en REPLICAS het verwachte gedrag voor automatisch schalen voor store-front-hpa weergeven.

Notitie

U kunt de op Kubernetes gebaseerde Event-Driven Autoscaler (KEDA) AKS-invoegtoepassing inschakelen voor uw cluster om schaling aan te sturen op basis van het aantal gebeurtenissen dat moet worden verwerkt. Zie Vereenvoudigde schaalaanpassing van toepassingen inschakelen met de invoegtoepassing Kubernetes Event-Driven Autoscaling (KEDA) (Preview) voor meer informatie.

AKS-knooppunten handmatig schalen

Notitie

Als u een automatisch AKS-cluster hebt gemaakt, zijn deze stappen niet van toepassing omdat het cluster knooppunten automatisch schaalt.

Als u uw AKS Standard-cluster hebt gemaakt met behulp van de opdrachten in de vorige zelfstudies, heeft uw cluster drie knooppunten. Als u dit aantal wilt verhogen of verlagen, kunt u het aantal knooppunten handmatig aanpassen.

In het volgende voorbeeld wordt het aantal knooppunten verhoogd naar vijf in het Kubernetes-cluster met de naam myAKSCluster. Het uitvoeren van deze opdracht duurt enkele minuten.

  • Schaal uw clusterknooppunten met behulp van de az aks scale opdracht.

    Zodra het cluster succesvol is opgeschaald, is uw uitvoer vergelijkbaar met de volgende voorbeelduitvoer:

    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
    

    Zodra het cluster succesvol is opgeschaald, zal uw uitvoer vergelijkbaar zijn met de volgende voorbeelduitvoer:

    "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
        ...
      }
      ...
    ]
    

U kunt de knooppunten in uw cluster ook automatisch schalen. Zie De automatische schaalaanpassing van clusters gebruiken met knooppuntgroepen voor meer informatie.

Volgende stappen

In deze zelfstudie hebt u verschillende schaalfuncties in uw Kubernetes-cluster gebruikt. U hebt geleerd hoe u:

  • Schaal de Kubernetes-pods waarop uw applicatie wordt uitgevoerd handmatig.
  • Configureer automatisch schalende pods waarop de front-end van de app draait.
  • Schaal de Kubernetes-knooppunten handmatig.

Als u klaar bent, selecteert u het pictogram Verwijderen en selecteert u in het bevestigingsbericht ook de naamruimte verwijderen. Schermopname van het verwijderen van het AKS-bureaubladproject door op het prullenbakpictogram te klikken.

In de volgende zelfstudie leert u hoe u Kubernetes in uw AKS-cluster bijwerkt.