Aiutaci 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à.
Kubernetes Vertical Pod Autoscaler regola automaticamente le prenotazioni di CPU e memoria per i tuoi Pod
-
Il cluster Amazon EKS è già esistente. Se non lo fai, vedi. Nozioni di base su Amazon EKS
-
Kubernetes Metrics Server è già installato. Per ulteriori informazioni, consulta Visualizza l'utilizzo delle risorse con Kubernetes Metrics Server.
-
Stai utilizzando un client
kubectl
che è configurato per comunicare con il cluster Amazon EKS. -
OpenSSL
1.1.1
o versioni successive deve essere installato sul dispositivo.
Implementazione di Vertical Pod Autoscaler
In questa sezione, verrà implementato Vertical Pod Autoscaler nel cluster.
-
Aprire una finestra del terminale e passare a una directory in cui si desidera scaricare il codice sorgente di Vertical Pod Autoscaler.
-
Clona il repository GitHub kubernetes/autoscaler
. git clone https://github.com/kubernetes/autoscaler.git
-
Passare alla directory
vertical-pod-autoscaler
.cd autoscaler/vertical-pod-autoscaler/
-
(Facoltativo) Se è già stata implementata un'altra versione di Vertical Pod Autoscaler, rimuoverla con il comando seguente.
./hack/vpa-down.sh
-
Se i tuoi nodi non hanno accesso a Internet al registro dei
registry.k8s.io
contenitori, 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.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 stai inviando le immagini a un repository Amazon ECR privato, sostituiscile
registry.k8s.io
nei manifesti con il tuo registro. Sostituisci111122223333
con l'ID del tuo account.region-code
Sostituiscila con la AWS regione 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 tuo repository, dovrai cambiarlo anche tu.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
-
Implementare Vertical Pod Autoscaler nel cluster mediante il comando seguente.
./hack/vpa-up.sh
-
Verifica che i Vertical Pod Autoscaler Pods 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
In questa sezione, verrà implementata un'applicazione di esempio per verificare il corretto funzionamento di Vertical Pod Autoscaler.
-
Implementare l'applicazione di esempio
hamster.yaml
per Vertical Pod Autoscaler mediante il comando seguente.kubectl apply -f examples/hamster.yaml
-
Ottieni i Pods dall'applicazione di esempio.
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
-
Descrivi uno dei Pod per visualizzarlo
cpu
ememory
prenotare. Sostituisciloc7d89d6db-rglf5
con uno dei risultati IDs restituiti nel 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 [...]
Come potete vedere, il Pod originale riserva 100 millicpu di CPU e 50 mebibyte di memoria. Per questa applicazione di esempio, 100 millicpu sono inferiori a quelli necessari al Pod per funzionare, quindi è vincolata dalla CPU. Il pod riserva inoltre una quantità di memoria nettamente inferiore rispetto alla necessaria. L'
vpa-recommender
implementazione di Vertical Pod Autoscaler analizza gli hamster Pod per vedere se i requisiti di CPU e memoria sono appropriati. Se sono necessarie modifiche, riavvia i Pod con valori aggiornativpa-updater
. -
Attendi il lancio di un nuovo
vpa-updater
Hamster Pod. Potrebbero essere necessari uno o due minuti. Puoi monitorare i Pod con il seguente comando.Nota
Se non sei sicuro che sia stato lanciato un nuovo Pod, confronta i nomi dei Pod con l'elenco precedente. All'avvio del nuovo Pod, vedrai un nuovo nome del Pod.
kubectl get --watch Pods -l app=hamster
-
Quando viene avviato un nuovo hamster Pods, descrivilo e visualizza le prenotazioni aggiornate di CPU e memoria.
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. Lamemory
è aumentata a 262.144 KB (circa 250 mebibyte), ossia cinque volte il valore originale. Questo Pod aveva risorse insufficienti e il Vertical Pod Autoscaler ha corretto la stima con un valore molto più appropriato. -
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>
-
Dopo aver provato l'applicazione di esempio, è possibile eliminarla con il comando seguente.
kubectl delete -f examples/hamster.yaml