Como configuro o Kubernetes Metrics Server e o Horizontal Pod Autoscaler no Amazon EKS?

3 minuto de leitura
0

Quero configurar o Kubernetes Metrics Server e o Horizontal Pod Autoscaler (HPA) no Amazon Elastic Kubernetes Service (Amazon EKS).

Resolução

Configure o ambiente

  1. Crie uma instância do Amazon Elastic Compute Cloud (Amazon EC2).
  2. Instale o kubectl na sua instância do EC2.
  3. Instale e configure a versão mais recente da AWS Command Line Interface (AWS CLI) em sua instância do EC2.
  4. Configure seu arquivo kubeconfig para apontar para o cluster do Amazon EKS.

Crie um Kubernetes Metrics Server

1.    Execute o comando a seguir para instalar o Metrics Server:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

2.    Execute o comando a seguir para confirmar que o Metrics Server está em execução:

kubectl get pods -n kube-system -l k8s-app=metrics-server

A saída é semelhante à seguinte:

kubectl get pods -n kube-system -l k8s-app=metrics-server
metrics-server-85cc795fbf-79d72   1/1     Running   0          22s

Crie uma implantação e um serviço php-apache

1.    Execute o comando a seguir para criar uma implantação php-apache:

kubectl create deployment php-apache --image=k8s.gcr.io/hpa-example

2.    Execute o comando a seguir para definir as solicitações de CPU:

kubectl patch deployment php-apache -p='{"spec":{"template":{"spec":{"containers":[{"name":"hpa-example","resources":{"requests":{"cpu":"200m"}}}]}}}}'

Importante: se você não definir o valor da cpu corretamente, a métrica de utilização da CPU do pod não será definida e o HPA não poderá escalar.

3.    Execute o comando a seguir para expor a implantação como um serviço:

kubectl create service clusterip php-apache --tcp=80

4.    Execute o comando a seguir para criar um HPA:

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

5.    Execute o comando a seguir para confirmar que o HPA foi criado:

kubectl get hpa

6.    Para criar um pod para se conectar à implantação criada anteriormente, execute o comando a seguir:

kubectl run -i --tty load-generator --image=busybox /bin/sh

7.    Para testar uma carga no pod no namespace usado na etapa 1, execute o script a seguir:

while true; do wget -q -O- http://php-apache; done

Observação: para sair do loop while e da sessão tty do pod do gerador de carga, use CTRL + C para cancelar o loop. Em seguida, use CTRL + D para sair da sessão.

8.    Para ver como o HPA escala o pod com base nas métricas de utilização da CPU, execute o comando a seguir (de preferência em outra janela do terminal):

kubectl get hpa -w

O Metrics Server agora está instalado e funcionando, e você pode usá-lo para obter métricas baseadas em recursos.

9.    Execute os comandos a seguir para limpar os recursos usados para testar o HPA:

kubectl delete hpa,service,deployment php-apache
kubectl delete pod load-generator

Informações relacionadas

Horizontal Pod Autoscaling (no site do Kubernetes)

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos