

 **Aidez à améliorer cette page** 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien **Modifier cette page sur** qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Ajuster les ressources des pods avec Vertical Pod Autoscaler
<a name="vertical-pod-autoscaler"></a>

Kubernetes [Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler) ajuste automatiquement les réservations de CPU et de mémoire pour vos pods afin de vous aider à « dimensionner correctement » vos applications. Cet ajustement peut améliorer l’utilisation des ressources du cluster et libérer du CPU et de la mémoire pour d’autres pods. Cette rubrique vous aide à déployer le VPA (Vertical Pod Autoscaler) sur votre cluster et à vérifier qu'il fonctionne.
+ Vous disposez d'un cluster Amazon EKS existant. Si ce n’est pas le cas, consultez [Mise en route avec Amazon EKS](getting-started.md).
+ Le serveur de métriques Kubernetes est installé. Pour de plus amples informations, consultez [Afficher l’utilisation des ressources avec le serveur de métriques Kubernetes](metrics-server.md).
+ Vous utilisez un client `kubectl` qui est [configuré pour communiquer avec votre cluster Amazon EKS](getting-started-console.md#eks-configure-kubectl).
+ OpenSSL `1.1.1` ou version ultérieure installé sur votre appareil.

## Déploiement du VPA (Vertical Pod Autoscaler)
<a name="vpa-deploy"></a>

Dans cette section, vous déployez le Vertical Pod Autoscaler sur votre cluster.

1. Ouvrez une fenêtre de terminal et accédez à un répertoire dans lequel vous souhaitez télécharger le code source du VPA (Vertical Pod Autoscaler).

1. Clonez le référentiel GitHub [kubernetes/autoscaler](https://github.com/kubernetes/autoscaler).

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

1. Passez au répertoire `vertical-pod-autoscaler`.

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

1. (Facultatif) Si vous avez déjà déployé une autre version du VPA (Vertical Pod Autoscaler), supprimez-la avec la commande suivante.

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

1. Si vos nœuds n’ont pas accès à Internet pour se connecter au registre de conteneurs `registry.k8s.io`, vous devez extraire les images suivantes et les envoyer vers votre propre référentiel privé. Pour plus d'informations sur la manière d'extraire les images et de les transférer vers votre propre référentiel privé, consultez [Copier une image de conteneur d'un référentiel vers un autre référentiel](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
   ```

   Si vous transférez les images vers un référentiel Amazon ECR privé, remplacez `registry.k8s.io` dans les manifestes par votre registre. Remplacez {{111122223333}} par votre ID de compte. Remplacez {{region-code}} par la région AWS dans laquelle votre cluster se situe. Les commandes suivantes supposent que vous avez nommé votre référentiel de la même manière que le référentiel du manifeste. Si vous avez donné un nom différent à votre référentiel, vous devrez également le modifier.

   ```
   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. Déployez le VPA (Vertical Pod Autoscaler) sur votre cluster avec la commande suivante.

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

1. Vérifiez que les pods Vertical Pod Autoscaler ont été créés avec succès.

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

   L'exemple qui suit illustre un résultat.

   ```
   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 de l'installation de votre VPA (Vertical Pod Autoscaler)
<a name="vpa-sample-app"></a>

Dans cette section, vous déployez un exemple d'application pour vérifier que le Vertical Pod Autoscaler fonctionne.

1. Déployez l'exemple `hamster.yaml` Vertical Pod Autoscaler avec la commande suivante.

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

1. Récupérez les pods à partir de l’application exemple `hamster`.

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

   L'exemple qui suit illustre un résultat.

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

1. Décrivez l’un des pods pour afficher sa réservation de `cpu` et de `memory`. Remplacez {{c7d89d6db-rglf5}} par l'un des ID renvoyés dans votre sortie de l'étape précédente.

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

   L'exemple qui suit illustre un résultat.

   ```
   [...]
   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
   [...]
   ```

   Vous pouvez constater que le pod d’origine réserve 100 millicpu de CPU et 50 mégioctets de mémoire. Pour cette application exemple, 100 millicpu est inférieur à ce dont le pod a besoin pour fonctionner, il est donc limité en termes de CPU. Il réserve également beaucoup moins de mémoire qu'il n'en a besoin. Le déploiement Vertical Pod Autoscaler `vpa-recommender` analyse les pods hamster pour vérifier si les exigences en matière de CPU et de mémoire sont appropriées. Si des ajustements sont nécessaires, le `vpa-updater` relance les pods avec les valeurs mises à jour.

1. Veuillez attendre que le `vpa-updater` lance un nouveau pod hamster. Cela devrait prendre une minute ou deux. Vous pouvez surveiller les pods à l’aide de la commande suivante.
**Note**  
Si vous n’êtes pas certain qu’un nouveau pod ait été lancé, comparez les noms des pods avec votre liste précédente. Lorsque le nouveau pod sera lancé, vous verrez apparaître un nouveau nom de pod.

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

1. Lorsqu’un nouveau pod hamster est démarré, décrivez-le et consultez les réservations de CPU et de mémoire mises à jour.

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

   L'exemple qui suit illustre un résultat.

   ```
   [...]
   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
   [...]
   ```

   Dans la sortie précédente, vous pouvez voir que la réservation de l'`cpu` est passée à 587 millicpu, ce qui représente plus de cinq fois la valeur d'origine. La `memory` a augmenté jusqu'à 262 144 kilo-octets, soit environ 250 mébioctets ou cinq fois la valeur d'origine. Ce pod manquait de ressources, et le Vertical Pod Autoscaler a corrigé l’estimation avec une valeur beaucoup plus appropriée.

1. Décrivez la ressource `hamster-vpa` pour afficher la nouvelle recommandation.

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

   L'exemple qui suit illustre un résultat.

   ```
   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. Lorsque vous avez terminé de tester votre exemple d'application, supprimez-le avec la commande suivante.

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