Esercitazione - Ridimensionare le applicazioni in Servizio Azure Kubernetes (AKS)

Se sono state seguite le esercitazioni precedenti, si dispone di un cluster Kubernetes funzionante e di un'app front di Azure Store.

In questa esercitazione, aumenti il numero di pod nell'applicazione, provi la scalabilità automatica dei pod e ridimensioni i nodi delle macchine virtuali di Azure per modificare la capacità del cluster nell'ospitare i carichi di lavoro. Scopri come:

  • Ridimensionare i nodi Kubernetes.
  • Ridimensionare manualmente i pod Kubernetes in cui è in esecuzione l'applicazione.
  • Configurare la scalabilità automatica dei pod che eseguono il frontend dell'app.

Operazioni preliminari

Nelle esercitazioni precedenti, hai creato un'immagine del contenitore per un'applicazione, caricato l'immagine in Registro Azure Container, creato un cluster AKS, distribuito un'applicazione e usato bus di servizio di Azure per ridistribuire un'applicazione aggiornata. Se questi passaggi non sono stati completati e si vuole seguire questa procedura, iniziare con Esercitazione 1 - Preparare l'applicazione per il servizio Azure Kubernetes.

Questa esercitazione modifica i conteggi dei pod e dei nodi e può aumentare i costi di calcolo. Usa un'identità con autorizzazioni per ridimensionare i carichi di lavoro e i pool di nodi di AKS, ad esempio Collaboratore o Proprietario per il gruppo di risorse.

Questa esercitazione richiede l'interfaccia della riga di comando di Azure 2.34.1 o versioni successive. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Scalare manualmente i pod

AKS Desktop

  1. Modificare la configurazione di ridimensionamento per order-service selezionando Ridimensionamento>Seleziona deployment: order-service>Modifica configurazione>Numero di repliche: 5. Screenshot che mostra la modifica della configurazione di scalabilità di order-service.

  2. Verificare che l'aggiornamento della distribuzione venga completato prima di continuare.

  3. Visualizzare i pod nel cluster usando il comando kubectl get.

    kubectl get pods
    

    L'output di esempio seguente mostra i pod che eseguono l'app Azure Store Front:

    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. Modificare manualmente il numero di pod nella distribuzione store-front usando il comando kubectl scale.

    kubectl scale --replicas=5 deployment.apps/store-front
    
  5. Verificare che i pod aggiuntivi siano stati creati usando il comando kubectl get pods.

    kubectl get pods --selector app=store-front
    

    L'esempio di output seguente mostra i pod aggiuntivi in esecuzione dell'app Azure Store Front:

    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
    

Scalabilità automatica dei pod

AKS Desktop

  1. All'interno del Project selezionare il pulsante >YAML di Kubernetes. Selezionare l'origine dell'applicazione, Kubernetes YAML

  2. Copiare e incollare questo manifesto di scalabilità automatica YAML e i limiti delle risorse.

    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. Selezionare Avanti>Distribuisci>chiudi. Screenshot che mostra il incollamento nella configurazione YAML.

  4. Selezionare Ridimensionamento>Selezionare distribuzione: store-front. È possibile vedere che la modalità di ridimensionamento è ora impostata su HPA, Limiti di replica e Utilizzo CPU/Destinazione impostata dalla configurazione. Schermata che mostra la panoramica del ridimensionamento del desktop AKS con la modalità HPA per la distribuzione storefront.

  5. Verificare che la modalità HPA sia abilitata e che i limiti della replica corrispondano ai valori del manifesto.

Riga di comando

Per usare la scalabilità automatica orizzontale dei pod, tutti i contenitori devono avere richieste e limiti di CPU definiti e i pod devono avere richieste specificate. Nel deployment aks-store-quickstart, il contenitore front-end richiede 1 mCPU con un limite di 1000 mCPU.

Queste richieste e limiti di risorse vengono definiti per ogni contenitore, come illustrato nell'esempio seguente YAML di esempio:

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

Scalare automaticamente i pod usando un file manifest

  1. Creare un file manifesto per definire il comportamento del ridimensionamento automatico e i limiti delle risorse, come illustrato nel file manifesto aks-store-quickstart-hpa.yaml di esempio condensato seguente:

    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. Applicare il file manifesto di scalabilità automatica usando il comando kubectl apply.

    kubectl apply -f aks-store-quickstart-hpa.yaml
    
  3. Controllare lo stato dell'autoscaler con il comando kubectl get hpa.

    kubectl get hpa
    

    Dopo pochi minuti con un carico minimo sull'app Azure Store Front, il numero di repliche di pod si riduce a tre. È possibile usare di nuovo il comando kubectl get pods per vedere i pod non necessari che vengono rimossi.

    Continua quando le colonne TARGETS e REPLICAS mostrano il comportamento di scalabilità automatica previsto per store-front-hpa.

Nota

È possibile abilitare nel cluster il componente aggiuntivo AKS KEDA (Kubernetes-based Event-Driven Autoscaler) per gestire il ridimensionamento in base al numero di eventi da elaborare. Per altre informazioni, vedere Abilitare la scalabilità automatica semplificata delle applicazioni con il componente aggiuntivo KeDA (Event-Driven AutoScaling) di Kubernetes (anteprima).

Scalare manualmente i nodi di AKS

Nota

Se hai creato un cluster AKS Automatic, questi passaggi non sono applicabili perché il cluster ridimensiona automaticamente i nodi.

Se hai creato il tuo cluster Standard di AKS usando i comandi dei tutorial precedenti, il tuo cluster ha tre nodi. Se si vuole aumentare o ridurre questa quantità, è possibile regolare manualmente il numero di nodi.

L'esempio seguente aumenta il numero di nodi a cinque nel cluster Kubernetes denominato myAKSCluster. Il completamento del comando richiede alcuni minuti.

  • Ridimensionare i nodi del cluster usando il comando az aks scale.

    Quando il cluster viene ridimensionato correttamente, l'output è simile all'output di esempio seguente:

    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
    

    Una volta ridimensionato correttamente il cluster, l'output sarà simile all'output di esempio seguente:

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

È anche possibile ridimensionare automaticamente i nodi nel cluster. Per altre informazioni, vedere Usare il ridimensionamento automatico del cluster con pool di nodi.

Passaggi successivi

In questa esercitazione sono state usate diverse funzionalità di scalabilità nel cluster Kubernetes. Si è appreso come:

  • Ridimensionare manualmente i pod Kubernetes in cui è in esecuzione l'applicazione.
  • Configurare la scalabilità automatica dei pod che eseguono il frontend dell'app.
  • Ridimensionare manualmente i nodi Kubernetes.

Al termine, selezionare l'icona Elimina e nel messaggio di conferma selezionare Elimina anche lo spazio dei nomi. Schermata che mostra l'eliminazione del progetto desktop AKS facendo clic sull'icona del cestino.

Nel tutorial successivo imparerai come aggiornare Kubernetes nel tuo cluster AKS.