Scalare i pod e l'infrastruttura KubernetesScale Kubernetes pods and Kubernetes infrastructure

Avviso

Si sta visualizzando la documentazione per la versione precedente del servizio contenitore di Azure.You are viewing documentation for the old version of the Azure Container Service. Il servizio contenitore di Azure è in fase di aggiornamento con l'aggiunta di nuove opzioni di distribuzione, funzionalità di gestione migliorate e vantaggi economici in Kubernetes in Azure.Azure Container Service (AKS) is being updated to add new deployment options, enhanced management capabilities, and cost benefit to Kubernetes on Azure. Per iniziare a usare tali funzionalità in anteprima, vedere AKS documentation (Documentazione del servizio contenitore di Azure).Visit the AKS documentation to start working with these preview features.

Se sono state eseguite le esercitazioni, si ha un cluster Kubernetes in funzione nel servizio contenitore di Azure ed è stata distribuita l'app Azure Voting.If you've been following the tutorials, you have a working Kubernetes cluster in Azure Container Service and you deployed the Azure Voting app.

In questa esercitazione, la quinta di sette, si aumenterà il numero di istanze dei pod nell'app e si proverà la scalabilità automatica dei pod.In this tutorial, part five of seven, you scale out the pods in the app and try pod autoscaling. Si apprenderà anche come ridimensionare il numero di nodi agente delle VM di Azure per modificare la capacità del cluster per l'hosting dei carichi di lavoro.You also learn how to scale the number of Azure VM agent nodes to change the cluster's capacity for hosting workloads. Le attività completate comprendono:Tasks completed include:

  • Scalabilità manuale di pod KubernetesManually scaling Kubernetes pods
  • Configurazione della scalabilità automatica di pod che eseguono il front-end dell'appConfiguring Autoscale pods running the app front end
  • Scalare i nodi agente Azure in KubernetesScale the Kubernetes Azure agent nodes

Nelle esercitazioni successive l'applicazione Azure Vote viene aggiornata e Operations Management Suite viene configurato per monitorare il cluster Kubernetes.In subsequent tutorials, the Azure Vote application is updated, and Operations Management Suite configured to monitor the Kubernetes cluster.

Prima di iniziareBefore you begin

Nelle esercitazioni precedenti è stato creato un pacchetto di un'applicazione in un'immagine del contenitore, caricata poi nel Registro contenitori di Azure, ed è stato creato un cluster Kubernetes.In previous tutorials, an application was packaged into a container image, this image uploaded to Azure Container Registry, and a Kubernetes cluster created. L'applicazione è stata quindi eseguita nel cluster Kubernetes.The application was then run on the Kubernetes cluster.

Se questi passaggi non sono stati ancora eseguiti e si vuole procedere, tornare a Tutorial 1 – Create container images (Esercitazione 1: Creare immagini del contenitore).If you have not done these steps, and would like to follow along, return to the Tutorial 1 – Create container images.

Scalare manualmente i podManually scale pods

Fino a questo momento sono stati distribuiti il front-end di Azure Vote e l'istanza di Redis, ognuno con una replica singola.Thus far, the Azure Vote front-end and Redis instance have been deployed, each with a single replica. Per verificare, eseguire il comando kubectl get.To verify, run the kubectl get command.

kubectl get pods

Output:Output:

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

Modificare manualmente il numero di pod nella distribuzione azure-vote-front usando il comando kubectl scale.Manually change the number of pods in the azure-vote-front deployment using the kubectl scale command. In questo esempio il numero aumenta a 5.This example increases the number to 5.

kubectl scale --replicas=5 deployment/azure-vote-front

Eseguire kubectl get pods per verificare che Kubernetes stia creando i pod.Run kubectl get pods to verify that Kubernetes is creating the pods. Dopo circa un minuto i pod aggiuntivi sono in esecuzione:After a minute or so, the additional pods are running:

kubectl get pods

Output:Output:

NAME                                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

Scalare automaticamente i podAutoscale pods

Kubernetes supporta la scalabilità automatica orizzontale dei pod per modificare il numero dei pod in una distribuzione a seconda dell'utilizzo della CPU o delle altre metriche selezionate.Kubernetes supports horizontal pod autoscaling to adjust the number of pods in a deployment depending on CPU utilization or other select metrics.

Per usare la scalabilità automatica, i pod devono avere richieste e limiti di CPU definiti.To use the autoscaler, your pods must have CPU requests and limits defined. Nella distribuzione di azure-vote-front il contenitore front-end richiede un valore di 0,25 della CPU, con un limite pari a 0,5 della CPU.In the azure-vote-front deployment, the front-end container requests 0.25 CPU, with a limit of 0.5 CPU. Le impostazioni sono simili:The settings look like:

resources:
  requests:
     cpu: 250m
  limits:
     cpu: 500m

L'esempio seguente usa il comando kubectl autoscale per scalare automaticamente il numero di pod nella distribuzione azure-vote-front.The following example uses the kubectl autoscale command to autoscale the number of pods in the azure-vote-front deployment. In questo caso, se l'utilizzo della CPU supera il 50%, la scalabilità automatica aumenta il numero di pod fino al valore massimo di 10.Here, if CPU utilization exceeds 50%, the autoscaler increases the pods to a maximum of 10.

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

Per visualizzare lo stato della scalabilità automatica, eseguire il comando seguente:To see the status of the autoscaler, run the following command:

kubectl get hpa

Output:Output:

NAME               REFERENCE                     TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
azure-vote-front   Deployment/azure-vote-front   0% / 50%   3         10        3          2m

Dopo pochi minuti con un carico minimo sull'app Azure Vote, il numero di repliche di pod si riduce automaticamente a 3.After a few minutes, with minimal load on the Azure Vote app, the number of pod replicas decreases automatically to 3.

Scalare gli agentiScale the agents

Se è stato creato usando i comandi predefiniti nell'esercitazione precedente, il cluster Kubernetes dispone di tre nodi agente.If you created your Kubernetes cluster using default commands in the previous tutorial, it has three agent nodes. Se si prevede un numero maggiore o minore di carichi di lavoro dei contenitori nel cluster, è possibile modificare manualmente il numero di agenti.You can adjust the number of agents manually if you plan more or fewer container workloads on your cluster. Usare il comando az acs scale e specificare il numero di agenti con il parametro --new-agent-count.Use the az acs scale command, and specify the number of agents with the --new-agent-count parameter.

Nell'esempio seguente il numero di nodi agente viene aumentato a 4 nel cluster Kubernetes, denominato myK8sCluster.The following example increases the number of agent nodes to 4 in the Kubernetes cluster named myK8sCluster. Il completamento del comando richiede alcuni minuti.The command takes a couple of minutes to complete.

az acs scale --resource-group=myResourceGroup --name=myK8SCluster --new-agent-count 4

L'output del comando mostra il numero di nodi agente nel valore di agentPoolProfiles:count:The command output shows the number of agent nodes in the value of agentPoolProfiles:count:

{
  "agentPoolProfiles": [
    {
      "count": 4,
      "dnsPrefix": "myK8SCluster-myK8SCluster-e44f25-k8s-agents",
      "fqdn": "",
      "name": "agentpools",
      "vmSize": "Standard_D2_v2"
    }
  ],
...

Passaggi successiviNext steps

In questa esercitazione sono state usate diverse funzionalità di scalabilità nel cluster Kubernetes.In this tutorial, you used different scaling features in your Kubernetes cluster. Le attività descritte includevano:Tasks covered included:

  • Scalabilità manuale di pod KubernetesManually scaling Kubernetes pods
  • Configurazione della scalabilità automatica di pod che eseguono il front-end dell'appConfiguring Autoscale pods running the app front end
  • Scalare i nodi agente Azure in KubernetesScale the Kubernetes Azure agent nodes

Passare all'esercitazione successiva per apprendere come aggiornare l'applicazione in Kubernetes.Advance to the next tutorial to learn about updating application in Kubernetes.