Ajudar a melhorar esta página
Quer contribuir para este guia do usuário? Escolha o link Editar esta página no GitHub, disponível no painel direito de cada página. 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
-
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.
-
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. Substitua111122223333
pelo ID da sua conta. Substituaregion-code
pela região da AWS em que seu cluster se encontra. 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.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.
-
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
. Substituac7d89d6db-rglf5
por um dos IDs retornados na saída da etapa anterior.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 Pods hamster 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 Pods hamster. 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 Pods 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