Esercitazione: Ridimensionare le applicazioni nel servizio Azure Kubernetes
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, parte sei di sette, si aumentano le istanze dei pod nell'app, si prova la scalabilità automatica dei pod e si ridimensiona il numero di nodi della macchina virtuale di Azure per modificare la capacità del cluster per l'hosting dei carichi di lavoro. Scopri come:
- Ridimensionare i nodi Kubernetes.
- Ridimensionare manualmente i pod Kubernetes che eseguono l'applicazione.
- Configurare la scalabilità automatica dei pod che eseguono il front-end dell'app.
Operazioni preliminari
Nelle esercitazioni precedenti è stata inserita un'applicazione in un'immagine del contenitore, è stata caricata l'immagine in Registro Azure Container, è stato creato un cluster del servizio Azure Kubernetes, è stata distribuita un'applicazione ed è stato usato il 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 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
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 Front di Azure Store:
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
Modificare manualmente il numero di pod nella distribuzione store-front usando il comando
kubectl scale
.kubectl scale --replicas=5 deployment.apps/store-front
Verificare che i pod aggiuntivi siano stati creati usando il comando
kubectl get pods
.kubectl get pods
L'output di esempio seguente mostra i pod aggiuntivi che eseguono l'app Front di Azure Store:
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
Scalare automaticamente i pod
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. Nella distribuzione aks-store-quickstart
, il contenitore front-end richiede 1 milione di CPU con un limite di 1000 m di CPU.
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
...
Ridimensionare automaticamente i pod usando un file manifesto
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
Applicare il file manifesto di scalabilità automatica usando il comando
kubectl apply
.kubectl apply -f aks-store-quickstart-hpa.yaml
Controllare lo stato del ridimensionamento automatico usando 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 nuovamente
kubectl get pods
per visualizzare la rimozione dei pod non necessari.
Nota
È possibile abilitare il componente aggiuntivo del servizio Azure Kubernetes basato su eventi (KEDA) del servizio Azure Kubernetes per favorire il ridimensionamento in base al numero di eventi che devono essere elaborati. Per altre informazioni, vedere Abilitare la scalabilità automatica semplificata delle applicazioni con il componente aggiuntivo KeDA (Event-Driven AutoScaling) di Kubernetes (anteprima).
Ridimensionare manualmente i nodi servizio Azure Kubernetes
Se il cluster Kubernetes è stato creato usando i comandi delle esercitazioni precedenti, il cluster ha due nodi. Se si vuole aumentare o ridurre questa quantità, è possibile regolare manualmente il numero di nodi.
Nell'esempio seguente il numero di nodi viene aumentato a tre nel cluster Kubernetes denominato myAKSCluster. Il completamento del comando richiede alcuni minuti.
Ridimensionare i nodi del cluster usando il comando
az aks scale
.az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
Una volta ridimensionato correttamente il cluster, l'output sarà simile all'output di esempio seguente:
"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 ... } ... ]
È 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. Contenuto del modulo:
- Ridimensionare manualmente i pod Kubernetes che eseguono l'applicazione.
- Configurare la scalabilità automatica dei pod che eseguono il front-end dell'app.
- Ridimensionare manualmente i nodi Kubernetes.
Nell'esercitazione successiva si apprenderà come aggiornare Kubernetes nel cluster del servizio Azure Kubernetes.
Azure Kubernetes Service