Aiutaci a migliorare questa pagina
Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
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à.
Modifica le risorse del pod con Vertical Pod Autoscaler
Il Vertical Pod Autoscaler
Prerequisiti
-
Il cluster Amazon EKS è già esistente. Se non lo è, consulta Inizia a usare Amazon EKS.
-
Kubernetes Metrics Server è già installato. Per ulteriori informazioni, consulta Visualizza l'utilizzo delle risorse con KubernetesMetrics 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.
Implementazione di Vertical Pod Autoscaler
-
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 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.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. Sostituisci
con l'ID del tuo account. Regione AWS Sostituiscilo con111122223333
quello in cui si trova il tuo cluster. I comandi seguenti presuppongono che tu abbia dato al repository lo stesso nome del repository nel manifesto. Se hai dato al repository un nome diverso, dovrai modificare anch'esso.region-code
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 Pods 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
In questa sezione, verrà implementata un'applicazione di esempio per verificare il corretto funzionamento di Vertical Pod Autoscaler.
Per testare l'installazione 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
-
Recupera 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 Pods per visualizzarne la relativa prenotazione di
cpu
ememory
. Sostituisci
con uno degli ID restituiti nell'output del passaggio precedente.c7d89d6db-rglf5
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 [...]
Tieni presente che il Pod originale riserva 100 millicpu di CPU e 50 mebibyte di memoria. Per questa applicazione di esempio, 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
vpa-recommender
di Vertical Pod Autoscaler analizza i Podshamster
per verificare se i requisiti di CPU e memoria sono appropriati. Se sono necessari adeguamenti,vpa-updater
riavvia i Podscon i valori aggiornati. -
Attendi che
vpa-updater
avvii un nuovo Podhamster
. Potrebbero essere necessari uno o due minuti. Puoi monitorare i Pods con il seguente comando.Nota
Se non sei certo che sia stato avviato un nuovo Pod, confronta i nomi dei Pod facendo riferimento all'elenco precedente. All'avvio del nuovo Pod, verrà visualizzato un nuovo nome per il Pod.
kubectl get --watch Pods -l app=hamster
-
Quando viene avviato un nuovo pod 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. Lamemory
è 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. -
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