Modifica le risorse del pod con Vertical Pod Autoscaler - Amazon EKS

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 Kubernetes Vertical Pod Autoscaler regola automaticamente le prenotazioni e la memoria per i tuoi CPU Pods per aiutarvi a «dimensionare correttamente» le vostre applicazioni. Questa modifica può migliorare l'utilizzo delle risorse del cluster e liberare CPU memoria per altri Pods. Questo argomento ti aiuta a distribuire Vertical Pod Autoscaler nel tuo cluster e a verificarne il funzionamento.

Prerequisiti

Implementazione di Vertical Pod Autoscaler

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

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

  2. Clona il kubernetes/autoscaler GitHub deposito.

    git clone https://github.com/kubernetes/autoscaler.git
  3. Passare alla directory vertical-pod-autoscaler.

    cd autoscaler/vertical-pod-autoscaler/
  4. (Facoltativo) Se è già stata implementata un'altra versione di Vertical Pod Autoscaler, rimuoverla con il comando seguente.

    ./hack/vpa-down.sh
  5. 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 stai inviando le immagini a un ECR repository Amazon privato, sostituiscile registry.k8s.io nei manifesti con il tuo registro. Sostituisci 111122223333 con l'ID del tuo account. region-codeSostituiscile con Regione AWS quello 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 al repository un nome diverso, 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
  6. Implementare Vertical Pod Autoscaler nel cluster mediante il comando seguente.

    ./hack/vpa-up.sh
  7. Verifica che il Vertical Pod Autoscaler Pods sono stati creati con successo.

    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
  1. Implementare l'applicazione di esempio hamster.yaml per Vertical Pod Autoscaler mediante il comando seguente.

    kubectl apply -f examples/hamster.yaml
  2. Ottieni il Pods dall'applicazione di hamster esempio.

    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
  3. Descrivi uno dei Pods per visualizzarlo cpu e memory prenotare. Sostituiscilo c7d89d6db-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 [...]

    Si può vedere che l'originale Pod riserva 100 millicpu CPU e 50 mebibyte di memoria. Per questa applicazione di esempio, 100 millicpu è inferiore a Pod deve funzionare, quindi è CPU -constrained. Il pod riserva inoltre una quantità di memoria nettamente inferiore rispetto alla necessaria. L'implementazione di Vertical Pod Autoscaler analizza vpa-recommender il hamster Pods per vedere se i requisiti di memoria CPU e sono appropriati. Se sono necessarie regolazioni, vpa-updater riavvia il Pods con valori aggiornati.

  4. Attendi vpa-updater il lancio di un nuovo hamster Pod. Questa operazione dovrebbe richiedere uno o due minuti. È possibile monitorare il Pods con il seguente comando.

    Nota

    Se non sei sicuro che un nuovo Pod è stato lanciato, confronta il Pod nomi con l'elenco precedente. Quando il nuovo Pod viene lanciato, ne vedrai uno nuovo Pod nome.

    kubectl get --watch Pods -l app=hamster
  5. Quando un nuovo hamster Pod viene avviato, descrivilo e visualizza gli aggiornamenti CPU e le prenotazioni di 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. La memory è aumentata a 262.144 KB (circa 250 mebibyte), ossia cinque volte il valore originale. Questo Pod non disponeva di risorse sufficienti e Vertical Pod Autoscaler ha corretto la stima con un valore molto più appropriato.

  6. 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>
  7. Dopo aver provato l'applicazione di esempio, è possibile eliminarla con il comando seguente.

    kubectl delete -f examples/hamster.yaml