Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
Modificare la configurazione di ridimensionamento per order-service selezionando Ridimensionamento>Seleziona deployment: order-service>Modifica configurazione>Numero di repliche: 5.
Verificare che l'aggiornamento della distribuzione venga completato prima di continuare.
Visualizzare i pod nel cluster usando il comando
kubectl get.kubectl get podsL'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 31mModificare manualmente il numero di pod nella distribuzione store-front usando il comando
kubectl scale.kubectl scale --replicas=5 deployment.apps/store-frontVerificare che i pod aggiuntivi siano stati creati usando il comando
kubectl get pods.kubectl get pods --selector app=store-frontL'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
All'interno del Project selezionare il pulsante >YAML di Kubernetes.
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: 50Selezionare Avanti>Distribuisci>chiudi.
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.
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
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.yamldi 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: 50Applicare il file manifesto di scalabilità automatica usando il comando
kubectl apply.kubectl apply -f aks-store-quickstart-hpa.yamlControllare lo stato dell'autoscaler con il comando
kubectl get hpa.kubectl get hpaDopo 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 podsper vedere i pod non necessari che vengono rimossi.Continua quando le colonne
TARGETSeREPLICASmostrano il comportamento di scalabilità automatica previsto perstore-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 tableaz aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 5Una 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.
Nel tutorial successivo imparerai come aggiornare Kubernetes nel tuo cluster AKS.