Ajudar a melhorar esta página
Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.
Ajustar os recursos de pods com o Vertical Pod Autoscaler
O Vertical Pod Autoscaler do Kubernetes
Pré-requisitos
-
Você tem um cluster existente do Amazon EKS. Caso contrário, consulte Começar a usar o Amazon EKS.
-
Você tem o servidor de métricas do Kubernetes instalado. Para ter mais informações, consulte Visualizar o uso de recursos com o KubernetesMetrics Server.
-
Você estiver usando um cliente do
kubectl
que está configurado para se comunicar com o cluster do Amazon EKS. -
O OpenSSL
1.1.1
ou posterior instalado no seu dispositivo.
Implantar o Vertical Pod Autoscaler
Nesta seção, você implantará o Vertical Pod Autoscaler em seu cluster.
Como implantar o Vertical Pod Autoscaler
-
Abra uma janela do terminal e navegue até o diretório onde você deseja fazer download do código-fonte do Vertical Pod Autoscaler.
-
Clone o repositório kubernetes/autoscaler
do GitHub. git clone https://github.com/kubernetes/autoscaler.git
-
Mude para o diretório
vertical-pod-autoscaler
.cd autoscaler/vertical-pod-autoscaler/
-
(Opcional) Se você já tiver implantado outra versão do Vertical Pod Autoscaler, remova-a com o comando a seguir.
./hack/vpa-down.sh
Se os nós não tiverem acesso à Internet para o registro do contêiner
registry.k8s.io
, você precisará extrair as seguintes imagens e enviá-las para seu próprio repositório privado. Para obter mais informações sobre como extrair as imagens e enviá-las para seu próprio repositório privado, consulte Copiar uma imagem de contêiner de um repositório para outro.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 você estiver enviando as imagens para um repositório privado do Amazon ECR, substitua
registry.k8s.io
nos manifestos pelo seu registro. Substitua
pelo ID da sua conta. Substitua111122223333
pela Região da AWS em que está o cluster. Para usar os comandos a seguir, você precisa ter nomeado seu repositório com o mesmo nome do repositório no manifesto. Se você nomeou o seu repositório como algo diferente, será necessário alterá-lo também.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-
Implante o Vertical Pod Autoscaler no cluster com o comando a seguir.
./hack/vpa-up.sh
-
Verifique se os Pods do Vertical Pod Autoscaler foram criados com êxito.
kubectl get pods -n kube-system
Veja um exemplo de saída abaixo.
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
Testar a instalação do Vertical Pod Autoscaler
Nesta seção, você implantará uma aplicação de exemplo para verificar se o Vertical Pod Autoscaler está funcionando.
Como testar a instalação do Vertical Pod Autoscaler
-
Implante o exemplo
hamster.yaml
do Vertical Pod Autoscaler com o comando a seguir.kubectl apply -f examples/hamster.yaml
-
Obtenha os Pods da aplicação de exemplo do
hamster
.kubectl get pods -l app=hamster
Veja um exemplo de saída abaixo.
hamster-
c7d89d6db
-rglf5
1/1 Running 0 48s hamster-c7d89d6db
-znvz5
1/1 Running 0 48s -
Descreva um dos Pods para visualizar a reserva de
cpu
ememory
. Substitua
por um dos IDs retornados na saída da etapa anterior.c7d89d6db-rglf5
kubectl describe pod hamster-
c7d89d6db-rglf5
Veja um exemplo de saída abaixo.
[...] 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 [...]
Você pode ver que o Pod original reserva 100 milicpu de CPU e 50 mebibytes de memória. Para esta aplicação de exemplo, 100 milicpu é menos do que o Pod precisa para ser executado, portanto, ele tem restrição de CPU. Ele também reserva muito menos memória do que precisa. A implantação
vpa-recommender
do Vertical Pod Autoscaler analisa os Podshamster
para ver se os requisitos de CPU e memória são apropriados. Se ajustes forem necessários, ovpa-updater
reiniciará os Pods com valores atualizados. -
Aguarde até que o
vpa-updater
inicie e um novo Podhamster
. Isso deve levar um ou dois minutos. É possível monitorar os Pods com o comando a seguir.nota
Se você não tiver certeza de que um novo Pod foi iniciado, compare os nomes de Pod com a lista anterior. Quando o novo Pod for iniciado, você verá um novo nome de Pod.
kubectl get --watch Pods -l app=hamster
-
Quando um novo Pod
hamster
for iniciado, descreva-o e visualize as reservas atualizadas de CPU e memória.kubectl describe pod hamster-
c7d89d6db
-jxgfv
Veja um exemplo de saída abaixo.
[...] 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 [...]
Na saída anterior, você pode ver que a reserva de
cpu
e aumentou para 587 milicpu, que é mais de cinco vezes o valor original. Amemory
aumentou para 262.144 Kilobytes, que é cerca de 250 mebibytes, ou cinco vezes o valor original. Esse Pod estava com poucos recursos, e o Vertical Pod Autoscaler corrigiu a estimativa com um valor muito mais apropriado. -
Descreva o recurso
hamster-vpa
para visualizar a nova recomendação.kubectl describe vpa/hamster-vpa
Veja um exemplo de saída abaixo.
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>
-
Depois de experimentar com a aplicação de exemplo, exclua-a com os comandos a seguir.
kubectl delete -f examples/hamster.yaml