Cloud

Como o Autoscaling do IBM Kubernetes Pode Impedir a Interrupções das suas Aplicações.

Compartilhe:

Confrontados com o desafio de aplicações sendo encerradas inesperadamente, muitas organizações se deparam com a realidade de que seus ambientes de Kubernetes não estão preparados para lidar eficazmente com uma demanda inesperada. A causa raiz frequentemente aponta para uma falta crítica de recursos, onde nós (worker nodes) trabalhadores físicos ou virtuais estão sobrecarregados ou subutilizados, levando a interrupções de serviço que afetam diretamente a operacionalidade e a eficiência.

No  IBM Cloud Kubernetes Service (IKS) que é uma solução gerenciada e permite às organizações orquestrar contêineres de forma eficiente usando Kubernetes, uma plataforma amplamente adotada para a gestão de aplicações em contêineres, a habilidade de escalar nós trabalhadores dinamicamente é essencial para ajustar os recursos do cluster e satisfazer as demandas das aplicações de forma eficiente. Esse escalonamento pode ser tanto horizontal, aumentando ou diminuindo o número de nós, quanto vertical, ajustando os recursos disponíveis para cada nó. A implementação efetiva do autoscaling é crucial para manter a responsividade das aplicações e a rentabilidade em ambientes nativos da nuvem.

No IBM Kubernetes, o escalonamento de nós trabalhadores(worker nodes) é um conceito fundamental que permite o ajuste dinâmico dos recursos do cluster para atender às demandas das aplicações. Os nós trabalhadores(worker nodes) são as máquinas físicas ou virtuais que executam os contêineres de suas aplicações. Escalando esses nós para cima ou para baixo, o Kubernetes pode gerenciar eficientemente as crescentes e inesperadas demandas de carga de trabalho, garantindo a utilização dos recursos e mantendo a estabilidade e desempenho. Essa capacidade suporta tanto o escalonamento horizontal, que aumenta ou diminui o número de nós, quanto o escalonamento vertical, que ajusta os recursos disponíveis para cada nó. O escalonamento eficaz dos nós é crucial para manter a responsividade das aplicações e a eficiência de custos em ambientes nativos da nuvem.

Vamos demonstrar a ativiacao desse recurso para a criacao de um Node Pool Auto Scale (Tempo de Leitura 5min).

Primeiramente, vamos ativar o recurso no console de administração do seu cluster.

Na tela principal de servico do IKS, clicar em cima do seu cluster provisionado.

Estando no dashboard do Cluster.

Descer a pagina ate o item Add-ons.

Autoscaling do Worker Nodes da IBM Utiliza o add-on cluster-autoscaler para otimizar recursos em seus clusters do serviço IBM Cloud® Kubernetes, disponíveis tanto em ambientes clássicos quanto VPC. Este add-on ajusta dinamicamente o número de nós trabalhadores conforme necessário, melhorando a eficiência e reduzindo custos operacionais.

Benefícios do Autoscaling:

  • Ajuste Automático: O sistema automaticamente escala os pools de trabalhadores para cima ou para baixo, respondendo em tempo real às mudanças na demanda de trabalho, garantindo que você pague apenas pelos recursos que utiliza.
  • Otimização de Recursos: Reduz a subutilização de recursos ao escalar para baixo durante períodos de baixa demanda e escala rapidamente para cima para atender aos picos de carga sem intervenção manual.
  • Resiliência Aprimorada: Melhora a disponibilidade e resiliência da aplicação ajustando rapidamente a capacidade em resposta a falhas de hardware ou surtos de tráfego inesperados.

Operações de Escalonamento:

  • Scale Up: Quando detecta pods pendentes devido à falta de recursos, o autoscaler adiciona nós trabalhadores, distribuindo-os uniformemente pelas zonas para atender à demanda.
  • Scale Down: Identifica nós operando abaixo de 50% da capacidade por mais de 10 minutos, removendo-os para economizar recursos. Esse limiar de redução é personalizável.

Configuração e Personalização:

  • Altere configurações como intervalos de varredura, algoritmos de expansão e tempos máximos de provisionamento de nós no ConfigMap do autoscaler.
  • Antecipe a necessidade de escalonar para cima através da sobreprovisão de nós, garantindo que os recursos estejam disponíveis antes que os pools de trabalhadores esgotem seus recursos.

Hands on:

Edite o config map autoscaler YAML file.

# kubectl edit cm iks-ca-configmap -n kube-system -o yaml

Exemplo da configuracao:

Exemplo de configuração: Isso habilitará o Pool2 com um mínimo de 2 nós e um máximo de 5.

[

{“name”: “default”,”minSize”: 1,”maxSize”: 2,”enabled”:false},

{“name”: “Pool2″,”minSize”: 2,”maxSize”: 5,”enabled”:true}

]

O autoscaler só pode escalar pools de trabalhadores que têm a label ibm-cloud.kubernetes.io/worker-pool-id. Para verificar se seu pool de Worker Nodes possui a etiqueta necessária, execute:, ibmcloud ks worker-pool get –cluster <cluster_name_or_ID> –worker-pool <worker_pool_name_or_ID> | grep Labels. Se seu pool de trabalhadores não tiver a etiqueta necessária, adicione um novo pool de trabalhadores e use este pool com o autoscaler.

Salve o arquivo de configuração.

Testes:

Confirme que o pod está em execução e o serviço foi criado.

kubectl get pods –namespace=kube-system | grep ibm-iks-cluster-autoscaler

Scale-up

Lembre-se de que o autoscaler é realizado com base no valor de solicitação do pod, então não precisamos realizar um teste de stress; apenas temos que aumentar o número de pods para alcançar o limite dos Nodes. Se seu deployment não tiver as solicitações configuradas adequadamente, o autoscaler não funcionará conforme você espera. Em nosso exemplo, usaremos um Replica Set simples que implanta quatro pods nginx.

nginx-test-autoscaler.yaml

Crie um replica set usando o arquivo yaml:

# kubectl apply -f nginx-test-autoscaler.yaml

Check o status dos pods — um deles esta com o status “Pending” state:

kubectl get pods

Observando o cluster Kubernetes dentro do portal IBM Cloud, podemos verificar que um novo nó está sendo provisionado. O autoscaler identificou que não há recurso computacional para iniciar o pod em estado pendente, então ele está automaticamente escalando para cima para colocar o pod em estado de execução.

Organizações que utilizam o IKS se beneficiam de uma solução Kubernetes gerenciada, onde as tarefas complexas e rotineiras de manutenção de clusters são tratadas automaticamente pela IBM. Isso permite maior eficiência e foco no desenvolvimento das aplicações, além de proporcionar resiliência e escalabilidade de maneira simplificada. Para empresas que lidam com cargas de trabalho variáveis e imprevisíveis, a capacidade do IKS de escalar automaticamente os recursos é crucial para garantir que as aplicações não falhem devido à falta de capacidade.

Links:

https://cloud.ibm.com/docs/containers?topic=containers-cluster-scaling-install-addon&interface=ui

https://cloud.ibm.com/docs/containers?topic=containers-cluster-scaling-install-addon-enable

SRE- CIO, IBM Financing, IT Support & Services (GI_CBA_IGF_S1 | CyberPhoenix)

Leia mais sobre

Bee Smart – RAG demo com watsonx.ai e watson.data

Esta demonstração usa a API (application programming interface) de serviços de embeddings watsonx disponível para implementar um fluxo de RAG. Os modelos de embeddings disponíveis em watsonx.ai (veja mais sobre watsonx.ai aqui) criam embeddings de texto que capturam o significado de frases ou passagens para uso em seus aplicativos de IA generativa. A conversão de […]

Como o Autoscaling do IBM Kubernetes Pode Impedir a Interrupções das suas Aplicações.

Confrontados com o desafio de aplicações sendo encerradas inesperadamente, muitas organizações se deparam com a realidade de que seus ambientes de Kubernetes não estão preparados para lidar eficazmente com uma demanda inesperada. A causa raiz frequentemente aponta para uma falta crítica de recursos, onde nós (worker nodes) trabalhadores físicos ou virtuais estão sobrecarregados ou subutilizados, […]

Do Ataque à Recuperação de Grandes Incidentes

Replay de nosso evento online para você que não teve a oportunidade de acompanhar ao vivo e agora pode assistir o que rolou sobre Disaster Recovery e Backup em Nuvem – Descubra como as soluções IBM Cloud podem te ajudar a enfrentar os desafios da segurança cibernética e garantir a recuperação rápida após incidentes. Caso […]