

 **Contribuisci a migliorare questa pagina** 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link **Modifica questa pagina** nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Regolazione delle risorse del pod con Vertical Pod Autoscaler
<a name="vertical-pod-autoscaler"></a>

[Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler) di Kubernetes regola automaticamente le prenotazioni di CPU e memoria per i pod per aiutare a “dimensionare correttamente” le applicazioni. Questo processo di adeguamento può migliorare l’utilizzo delle risorse del cluster e liberare CPU e memoria per altri pod. Questo argomento illustra come implementare Vertical Pod Autoscaler nel cluster e verificarne il funzionamento.
+ Il cluster Amazon EKS è già esistente. In caso contrario, consulta [Nozioni di base su Amazon EKS](getting-started.md).
+ Kubernetes Metrics Server è già installato. Per ulteriori informazioni, consulta [Visualizza l’utilizzo delle risorse con Kubernetes Metrics Server](metrics-server.md).
+ Stai utilizzando un client `kubectl` che è [configurato per comunicare con il cluster Amazon EKS](getting-started-console.md#eks-configure-kubectl).
+ OpenSSL `1.1.1` o versioni successive deve essere installato sul dispositivo.

## Implementazione di Vertical Pod Autoscaler
<a name="vpa-deploy"></a>

In questa sezione, verrà implementato Vertical Pod Autoscaler nel cluster.

1. Aprire una finestra del terminale e passare a una directory in cui si desidera scaricare il codice sorgente di Vertical Pod Autoscaler.

1. Clona il repository GitHub [kubernetes/autoscaler](https://github.com/kubernetes/autoscaler).

   ```
   git clone https://github.com/kubernetes/autoscaler.git
   ```

1. Passare alla directory `vertical-pod-autoscaler`.

   ```
   cd autoscaler/vertical-pod-autoscaler/
   ```

1. (Facoltativo) Se è già stata implementata un'altra versione di Vertical Pod Autoscaler, rimuoverla con il comando seguente.

   ```
   ./hack/vpa-down.sh
   ```

1. Se i nodi non hanno accesso Internet al registro del container `registry.k8s.io`, devi estrarre le seguenti immagini e inviarle al tuo repository privato. Per ulteriori informazioni su come estrarre e inviare immagini al tuo repository privato, consulta la sezione [Copia di un'immagine di container da un repository a un altro](copy-image-to-repository.md).

   ```
   registry.k8s.io/autoscaling/vpa-admission-controller:0.10.0
   registry.k8s.io/autoscaling/vpa-recommender:0.10.0
   registry.k8s.io/autoscaling/vpa-updater:0.10.0
   ```

   Se invii le immagini a un repository Amazon ECR privato, sostituisci `registry.k8s.io` nei manifesti con il tuo registro. Sostituire {{111122223333}} con l'ID account. Sostituisci {{region-code}} con la regione AWS in cui si trova il cluster. I comandi seguenti presuppongono che tu abbia dato al repository lo stesso nome del repository nel manifesto. Se hai dato un nome diverso al repository, dovrai modificare anch’esso.

   ```
   sed -i.bak -e 's/registry.k8s.io/111122223333.dkr.ecr.region-code.amazonaws.com/' ./deploy/admission-controller-deployment.yaml
   sed -i.bak -e 's/registry.k8s.io/111122223333.dkr.ecr.region-code.amazonaws.com/' ./deploy/recommender-deployment.yaml
   sed -i.bak -e 's/registry.k8s.io/111122223333.dkr.ecr.region-code.amazonaws.com/' ./deploy/updater-deployment.yaml
   ```

1. Implementare Vertical Pod Autoscaler nel cluster mediante il comando seguente.

   ```
   ./hack/vpa-up.sh
   ```

1. Verifica che i pod di Vertical Pod Autoscaler siano stati creati correttamente.

   ```
   kubectl get pods -n kube-system
   ```

   Di seguito viene riportato un output di esempio:

   ```
   NAME                                        READY   STATUS    RESTARTS   AGE
   [...]
   metrics-server-8459fc497-kfj8w              1/1     Running   0          83m
   vpa-admission-controller-68c748777d-ppspd   1/1     Running   0          7s
   vpa-recommender-6fc8c67d85-gljpl            1/1     Running   0          8s
   vpa-updater-786b96955c-bgp9d                1/1     Running   0          8s
   ```

## Test dell'installazione di Vertical Pod Autoscaler
<a name="vpa-sample-app"></a>

In questa sezione, verrà implementata un'applicazione di esempio per verificare il corretto funzionamento di Vertical Pod Autoscaler.

1. Implementare l'applicazione di esempio `hamster.yaml` per Vertical Pod Autoscaler mediante il comando seguente.

   ```
   kubectl apply -f examples/hamster.yaml
   ```

1. Recupera i pod dall’applicazione esemplificativa `hamster`.

   ```
   kubectl get pods -l app=hamster
   ```

   Di seguito viene riportato un output di esempio:

   ```
   hamster-c7d89d6db-rglf5   1/1     Running   0          48s
   hamster-c7d89d6db-znvz5   1/1     Running   0          48s
   ```

1. Descrivi uno dei pod per visualizzare la prenotazione di `cpu` e `memory`. Sostituisci {{c7d89d6db-rglf5}} con uno degli ID restituiti nell'output del passaggio precedente.

   ```
   kubectl describe pod hamster-c7d89d6db-rglf5
   ```

   Di seguito viene riportato un output di esempio:

   ```
   [...]
   Containers:
     hamster:
       Container ID:  docker://e76c2413fc720ac395c33b64588c82094fc8e5d590e373d5f818f3978f577e24
       Image:         registry.k8s.io/ubuntu-slim:0.1
       Image ID:      docker-pullable://registry.k8s.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1
       Port:          <none>
       Host Port:     <none>
       Command:
         /bin/sh
       Args:
         -c
         while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done
       State:          Running
         Started:      Fri, 27 Sep 2019 10:35:16 -0700
       Ready:          True
       Restart Count:  0
       Requests:
         cpu:        100m
         memory:     50Mi
   [...]
   ```

   Nota che il pod originale riserva 100 millicpu di CPU e 50 mebibyte di memoria. Per questa applicazione esemplificativa, 100 millicpu è un valore inferiore a quanto il pod deve eseguire, quindi risulta limitato dalla CPU. Il pod riserva inoltre una quantità di memoria nettamente inferiore rispetto alla necessaria. L’implementazione di Vertical Pod Autoscaler `vpa-recommender` analizza i pod hamster per verificare se i requisiti di CPU e memoria siano appropriati. Se sono necessari adeguamenti, `vpa-updater` rilancia i pod con valori aggiornati.

1. Attendi che `vpa-updater` avvii un nuovo pod hamster. Potrebbero essere necessari uno o due minuti. È possibile monitorare i pod con il comando seguente.
**Nota**  
Se non si è sicuri che sia stato avviato un nuovo pod, confronta i nomi dei pod facendo riferimento all’elenco precedente. All’avvio del nuovo pod, sarà visualizzato il relativo nome.

   ```
   kubectl get --watch Pods -l app=hamster
   ```

1. Quando è avviato un nuovo pod hamster, aggiungi una descrizione e visualizza le prenotazioni di CPU e memoria aggiornate.

   ```
   kubectl describe pod hamster-c7d89d6db-jxgfv
   ```

   Di seguito viene riportato un output di esempio:

   ```
   [...]
   Containers:
     hamster:
       Container ID:  docker://2c3e7b6fb7ce0d8c86444334df654af6fb3fc88aad4c5d710eac3b1e7c58f7db
       Image:         registry.k8s.io/ubuntu-slim:0.1
       Image ID:      docker-pullable://registry.k8s.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1
       Port:          <none>
       Host Port:     <none>
       Command:
         /bin/sh
       Args:
         -c
         while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done
       State:          Running
         Started:      Fri, 27 Sep 2019 10:37:08 -0700
       Ready:          True
       Restart Count:  0
       Requests:
         cpu:        587m
         memory:     262144k
   [...]
   ```

   Nell'output precedente puoi osservare che la prenotazione della `cpu` è passata a 587 millicpu, ossia un valore di oltre cinque volte superiore a quello originale. La `memory` è aumentata a 262.144 KB (circa 250 mebibyte), ossia cinque volte il valore originale. Questo pod disponeva di un numero insufficiente di risorse e pertanto Vertical Pod Autoscaler ha corretto la stima con un valore più adeguato.

1. Descrivere la risorsa `hamster-vpa` per visualizzare la nuova raccomandazione.

   ```
   kubectl describe vpa/hamster-vpa
   ```

   Di seguito viene riportato un output di esempio:

   ```
   Name:         hamster-vpa
   Namespace:    default
   Labels:       <none>
   Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                   {"apiVersion":"autoscaling.k8s.io/v1beta2","kind":"VerticalPodAutoscaler","metadata":{"annotations":{},"name":"hamster-vpa","namespace":"d...
   API Version:  autoscaling.k8s.io/v1beta2
   Kind:         VerticalPodAutoscaler
   Metadata:
     Creation Timestamp:  2019-09-27T18:22:51Z
     Generation:          23
     Resource Version:    14411
     Self Link:           /apis/autoscaling.k8s.io/v1beta2/namespaces/default/verticalpodautoscalers/hamster-vpa
     UID:                 d0d85fb9-e153-11e9-ae53-0205785d75b0
   Spec:
     Target Ref:
       API Version:  apps/v1
       Kind:         Deployment
       Name:         hamster
   Status:
     Conditions:
       Last Transition Time:  2019-09-27T18:23:28Z
       Status:                True
       Type:                  RecommendationProvided
     Recommendation:
       Container Recommendations:
         Container Name:  hamster
         Lower Bound:
           Cpu:     550m
           Memory:  262144k
         Target:
           Cpu:     587m
           Memory:  262144k
         Uncapped Target:
           Cpu:     587m
           Memory:  262144k
         Upper Bound:
           Cpu:     21147m
           Memory:  387863636
   Events:          <none>
   ```

1. Dopo aver provato l'applicazione di esempio, è possibile eliminarla con il comando seguente.

   ```
   kubectl delete -f examples/hamster.yaml
   ```