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.
Ajustez les ressources du pod avec Vertical Pod Autoscaler
Le Kubernetes Vertical Pod Autoscaler
-
Vous disposez d'un cluster Amazon EKS existant. Si ce n'est pas le cas, voyezMise en route avec Amazon EKS.
-
Le serveur de métriques Kubernetes est installé. Pour de plus amples informations, veuillez consulter Afficher l'utilisation des ressources avec le serveur Kubernetes Metrics.
-
Vous utilisez un client
kubectl
qui est configuré pour communiquer avec votre cluster Amazon EKS. -
OpenSSL
1.1.1
ou version ultérieure installé sur votre appareil.
Déploiement du VPA (Vertical Pod Autoscaler)
Dans cette section, vous déployez le Vertical Pod Autoscaler sur votre cluster.
-
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).
-
Clonez le référentiel GitHub kubernetes/autoscaler
. git clone https://github.com/kubernetes/autoscaler.git
-
Passez au répertoire
vertical-pod-autoscaler
.cd autoscaler/vertical-pod-autoscaler/
-
(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
-
Si vos nœuds ne disposent pas d'un accès Internet au registre des
registry.k8s.io
conteneurs, vous devez extraire les images suivantes et les transférer 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.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-les
registry.k8s.io
dans les manifestes par votre registre. Remplacez111122223333
par votre ID de compte. Remplacezregion-code
par la AWS région dans laquelle se trouve votre cluster. 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 autre nom à votre dépôt, 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
-
Déployez le VPA (Vertical Pod Autoscaler) sur votre cluster avec la commande suivante.
./hack/vpa-up.sh
-
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)
Dans cette section, vous déployez un exemple d'application pour vérifier que le Vertical Pod Autoscaler fonctionne.
-
Déployez l'exemple
hamster.yaml
Vertical Pod Autoscaler avec la commande suivante.kubectl apply -f examples/hamster.yaml
-
Obtenez les Pods à partir de l'
hamster
exemple d'application.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
-
Décrivez l'un des pods pour le consulter
cpu
etmemory
réserver.c7d89d6db-rglf5
Remplacez-le par l'un des résultats IDs renvoyés à 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 voir que le Pod d'origine réserve 100 millicpu de processeur et 50 mégaoctets de mémoire. Pour cet exemple d'application, 100 millicpu sont inférieurs à ce dont le Pod a besoin pour fonctionner, il est donc limité par le processeur. Il réserve également beaucoup moins de mémoire qu'il n'en a besoin. Le
vpa-recommender
déploiement de Vertical Pod Autoscaler analyse les hamsters Pods pour déterminer si les exigences en matière de processeur et de mémoire sont appropriées. Si des ajustements sont nécessaires, les pods sontvpa-updater
relancés avec des valeurs mises à jour. -
Attendez le lancement
vpa-updater
d'un nouveau hamster Pods. Cela devrait prendre une minute ou deux. Vous pouvez surveiller les Pods à l'aide de la commande suivante.Note
Si vous n'êtes pas sûr 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 un nouveau nom de Pod.
kubectl get --watch Pods -l app=hamster
-
Lorsqu'un nouveau hamster Pods est démarré, décrivez-le et consultez les réservations de processeur 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. Lamemory
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. -
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>
-
Lorsque vous avez terminé de tester votre exemple d'application, supprimez-le avec la commande suivante.
kubectl delete -f examples/hamster.yaml