Zelfstudie: toepassingen schalen in AKS (Azure Kubernetes Service)

Als u de vorige zelfstudies hebt gevolgd, hebt u een werkend Kubernetes-cluster en hebt u de Azure Voting-voorbeeld-app geïmplementeerd. In deze zelfstudie, deel vijf van zeven, schaalt u de schillen in de app en probeert u automatisch schalen van schillen uit. U leert ook hoe u het aantal Azure VM-knooppunten schaalt om de capaciteit van het cluster voor het hosten van werkbelastingen te wijzigen. In deze zelfstudie leert u procedures om het volgende te doen:

  • Schaal de Kubernetes-knooppunten.
  • Schaal handmatig Kubernetes-pods die uw toepassing uitvoeren.
  • Configureer pods voor automatisch schalen die de app-front-end uitvoeren.

In de komende zelfstudies werkt u de Azure Vote-toepassing bij naar een nieuwe versie.

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 en de toepassing geïmplementeerd in het AKS-cluster.

Als u deze stappen nog niet hebt voltooid en deze zelfstudie wilt volgen, begint u met de eerste zelfstudie , Een toepassing voorbereiden voor AKS.

Voor deze zelfstudie is Azure CLI versie 2.0.53 of hoger vereist. Voer az --version uit om de versie te bekijken. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.

Schillen handmatig schalen

Toen u in de vorige zelfstudies de Azure Vote-front-end en het Redis-exemplaar hebt geïmplementeerd, is er één replica gemaakt.

  1. Bekijk het aantal en de status van pods in uw cluster met behulp van de kubectl get opdracht .

    kubectl get pods
    

    In het volgende voorbeeld van uitvoer ziet u één pod voor de front-end en één voor de back-end:

    NAME                               READY     STATUS    RESTARTS   AGE
    azure-vote-back-2549686872-4d2r5   1/1       Running   0          31m
    azure-vote-front-848767080-tf34m   1/1       Running   0          31m
    
  2. Wijzig handmatig het aantal pods in de implementatie azure-vote-front met behulp van de kubectl scale opdracht . Met de volgende voorbeeldopdracht wordt het aantal front-endpods verhoogd naar vijf:

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

    kubectl get pods
    
                                        READY     STATUS    RESTARTS   AGE
    azure-vote-back-2606967446-nmpcf    1/1       Running   0          15m
    azure-vote-front-3309479140-2hfh0   1/1       Running   0          3m
    azure-vote-front-3309479140-bzt05   1/1       Running   0          3m
    azure-vote-front-3309479140-fvcvm   1/1       Running   0          3m
    azure-vote-front-3309479140-hrbf2   1/1       Running   0          15m
    azure-vote-front-3309479140-qphz8   1/1       Running   0          3m
    

Schillen automatisch schalen

Kubernetes biedt ondersteuning voor het automatisch horizontaal schalen van schillen om zo het aantal schillen in een implementatie aan te passen op basis van het CPU-gebruik of andere geselecteerde metrische gegevens. De Metrics Server wordt automatisch geïmplementeerd in AKS-clusters met versie 1.10 en hoger en biedt resourcegebruik aan Kubernetes.

  • Controleer de versie van uw AKS-cluster met behulp van de az aks show opdracht .

    az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
    

Notitie

Als uw AKS-cluster een lagere versie heeft dan 1.10, wordt de Metrics Server niet automatisch geïnstalleerd. Metrics Server-installatiemanifesten zijn beschikbaar als een components.yaml asset in Metrics Server-releases. Dit betekent dat u ze via een URL kunt installeren. Zie de sectie Implementatie van het Leesmij-bestand voor meer informatie over deze YAML-definities.

Voorbeeldinstallatie:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

Als u de automatische schaalaanpassing wilt gebruiken, moeten alle containers en pods gedefinieerde CPU-aanvragen en -limieten hebben. In de azure-vote-front implementatie vraagt de front-endcontainer 0,25 CPU aan met een limiet van 0,5 CPU.

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

  containers:
  - name: azure-vote-front
    image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
    ports:
    - containerPort: 80
    resources:
      requests:
        cpu: 250m
      limits:
        cpu: 500m

Pods automatisch schalen met behulp van kubectl autoscale

  • Pods automatisch schalen met behulp van de kubectl autoscale opdracht . Met de volgende opdracht wordt het aantal pods in de implementatie azure-vote-front automatisch geschaald met de volgende voorwaarden: als het gemiddelde CPU-gebruik voor alle pods hoger is dan 50% van het aangevraagde gebruik, verhoogt de automatische schaalaanpassing de pods tot een maximum van 10 exemplaren en minimaal drie exemplaren voor de implementatie:

    kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
    

Pods automatisch schalen met behulp van een manifestbestand

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

    Notitie

    Als u gebruikt apiVersion: autoscaling/v2, kunt u meer metrische gegevens introduceren bij automatisch schalen, waaronder aangepaste metrische gegevens. Zie Automatisch schalen van meerdere metrische gegevens en aangepaste metrische gegevens met behulp v2 van de HorizontalPodAutoscalervoor meer informatie.

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: azure-vote-back-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: azure-vote-back
      targetCPUUtilizationPercentage: 50 # target CPU utilization
    
    ---
    
    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: azure-vote-front-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: azure-vote-front
      targetCPUUtilizationPercentage: 50 # target CPU utilization
    
  2. Pas het manifestbestand voor automatische schaalaanpassing toe met behulp van de kubectl apply opdracht .

    kubectl apply -f azure-vote-hpa.yaml
    
  3. Controleer de status van de automatische schaalaanpassing met behulp van de kubectl get hpa opdracht .

    kubectl get hpa
    
    # Example output
    NAME               REFERENCE                     TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
    azure-vote-front   Deployment/azure-vote-front   0% / 50%   3         10        3          2m
    

    Na een paar minuten, met minimale belasting van de Azure Vote-app, neemt het aantal podreplica's af tot drie. U kunt kubectl get pods opnieuw gebruiken om te zien dat de overbodige pods worden verwijderd.

AKS-knooppunten handmatig schalen

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

In het volgende voorbeeld wordt het aantal knooppunten in het Kubernetes-cluster myAKSCluster verhoogd tot drie. Het uitvoeren van deze opdracht duurt enkele minuten.

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

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

    Zodra het cluster is geschaald, is de uitvoer vergelijkbaar met de volgende voorbeelduitvoer:

    "agentPoolProfiles": [
      {
        "count": 3,
        "dnsPrefix": null,
        "fqdn": null,
        "name": "myAKSCluster",
        "osDiskSizeGb": null,
        "osType": "Linux",
        "ports": null,
        "storageProfile": "ManagedDisks",
        "vmSize": "Standard_D2_v2",
        "vnetSubnetId": null
      }
    

Volgende stappen

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

  • Schaal handmatig Kubernetes-pods die uw toepassing uitvoeren.
  • Configureer pods voor automatisch schalen die de app-front-end uitvoeren.
  • Schaal de Kubernetes-knooppunten handmatig.

In de volgende zelfstudie leert u hoe u toepassingen bijwerkt in Kubernetes.