Dimensionamento de direitos do Kubernetes: economize dinheiro e melhore o desempenho
O redimensionamento do Kubernetes é o processo que você usa para garantir que seu cluster Kubernetes tenha a quantidade certa de recursos para executar suas cargas de trabalho com eficiência. O redimensionamento do K8 inclui CPU, memória e armazenamento, e é importante acertar. Pode ser caro executar o Kubernetes, então você precisa ter certeza de não provisionar recursos em excesso (e desperdiçar dinheiro). Por outro lado, se o seu cluster K8s não tiver recursos suficientes, suas cargas de trabalho serão prejudicadas, levando a tempos de resposta mais longos e mais erros. Isso pode até resultar em interrupções e tempo de inatividade para seus aplicativos e serviços, o que não deixará seus usuários finais muito satisfeitos.
O Gartner prevê que, até 2027, mais de 70% das empresas utilizarão plataformas de nuvem industriais (ICPs) para acelerar suas iniciativas de negócios (normalmente nos referimos a elas como plataformas internas de desenvolvedores). Em 2023, era inferior a 15%, pelo que a adoção de tecnologias nativas da nuvem, incluindo contentores e Kubernetes, aumentará muito rapidamente nos próximos anos. A hora de entender o dimensionamento de direitos do Kubernetes é agora, antes que você já esteja provisionando e gastando demais.
Como obter o dimensionamento correto do Kubernetes
Para fazer o redimensionamento correto do Kubernetes , você precisa entender algumas coisas importantes:
- Cargas de trabalho: quais cargas de trabalho você está executando no Kubernetes? Quais são seus requisitos de recursos? Quais são seus requisitos de desempenho e confiabilidade?
- Escalonamento automático do Kubernetes: seu cluster está sendo ampliado para atender à demanda? Quais recursos estão disponíveis para você?
- Monitoramento e registro em log: como você está monitorando e registrando seus clusters e cargas de trabalho do Kubernetes? Esses dados serão essenciais para ajudá-lo a identificar oportunidades de redimensionamento.
Para realmente compreender bem suas cargas de trabalho, você precisa dos dados certos. O ideal é coletar métricas durante um período de tempo apropriado para tomar decisões informadas. Aqui estão alguns dos dados que você precisa:
Métricas de uso de recursos
- utilização do CPU
- Uso de memória
- Uso de armazenamento
- Uso de rede
- Pod reiniciado
Requisitos de carga de trabalho
- Requisitos mínimos de recursos (CPU, memória, armazenamento)
- Requisitos máximos de recursos (CPU, memória, armazenamento)
- Hora de inicialização
- Características de tempo de execução
- Dependências
Capacidade do cluster
- Tipos e capacidades de nós
- Mínimos e máximos de escalonamento automático
Padrões de tráfego
- Tráfego máximo
- Tráfego médio
- Picos de tráfego
- Distribuição de tráfego entre nós e cargas de trabalho
Dados adicionais
- Custo de execução do cluster
- SLAs para cargas de trabalho
- Tolerância de risco
Você pode coletar essas informações usando diversas ferramentas; aqui estão alguns que podem ajudá-lo:
- Cachinhos Dourados (um utilitário de código aberto que ajuda a identificar um ponto de partida para definir solicitações e limites de recursos)
- Kubernetes Metrics Server (métricas de recursos de contêiner para API de métricas do Kubernetes)
- Prometheus (kit de ferramentas de monitoramento e alerta de código aberto)
- Grafana (análise de código aberto e visualização interativa)
- Cluster Autoscaler (adapta automaticamente o número de nós Kubernetes no cluster aos seus requisitos)
- Kube-State-Metrics (um agente para gerar e expor métricas em nível de cluster)
Identifique oportunidades de redimensionamento
Os gastos com nuvem representam um custo significativo para muitas organizações, por isso faz sentido garantir que os recursos sejam alocados da forma mais eficiente possível. Ainda assim, pode ser um desafio obter todos os dados necessários para tomar decisões informadas. Muitas vezes é um verdadeiro desafio obter visibilidade do seu ambiente Kubernetes neste nível, especialmente se você tiver várias equipes, vários clusters e várias nuvens em jogo. É por isso que criamos Cachinhos Dourados . Ele fornece um painel que usa o vertical-pod-autoscaler do Kubernetes no modo de recomendação para fornecer uma sugestão de solicitações de recursos para cada um de seus aplicativos, criando um VPA para cada carga de trabalho em um namespace e, em seguida, consultando-os para obter informações.
As solicitações e limites de recursos permitem que você especifique a quantidade mínima e máxima de recursos que suas cargas de trabalho podem solicitar, o que pode ajudá-lo a evitar o provisionamento excessivo e garantir que suas cargas de trabalho tenham os recursos necessários para um desempenho eficaz. Você também deve usar ferramentas de monitoramento continuamente para rastrear o uso de recursos ao longo do tempo, para poder identificar cargas de trabalho que estão super ou sub-provisionadas. Combine isso com o escalonamento automático de cluster para aumentar ou diminuir automaticamente seu cluster Kubernetes com base na demanda, para que você use recursos apenas quando precisar deles.
Primeiros passos com o dimensionamento de direitos do Kubernetes
Algo a ser observado: Cachinhos Dourados geralmente é um bom ponto de partida para definir suas solicitações e limites de recursos, mas cada ambiente é diferente e você ainda terá que ajustar seus aplicativos para seus casos de uso individuais. Veja como começar:
- Comece pequeno. Não tente redimensionar todos os aplicativos ou serviços em todo o seu ambiente Kubernetes de uma só vez. Comece usando Cachinhos Dourados para identificar algumas cargas de trabalho com provisionamento excessivo ou insuficiente. Depois de redimensionar essas cargas de trabalho usando essas recomendações, você poderá trabalhar no ajuste fino delas antes de passar para as próximas.
- Seja iterativo. O Rightsizing não é um processo único. Suas cargas de trabalho e clusters mudarão e, à medida que isso acontecer, você precisará analisar novamente suas decisões de redimensionamento. Monitore o uso de recursos e ajuste os limites e solicitações de recursos conforme necessário.
- Teste. Certifique-se de testar suas alterações minuciosamente em um ambiente que não seja de produção antes de enviá-las para produção. O teste de carga em seu ambiente de não produção também pode ajudá-lo a dimensionar corretamente antes de enviar para produção.
Gerenciamento automatizado de políticas e dimensionamento de direitos do Kubernetes
Como o dimensionamento de direitos é tão importante para a sua infraestrutura Kubernetes, é considerada uma prática recomendada configurar os seus pedidos e limites de recursos para todos os contentores. Polaris é um mecanismo de política de código aberto que ajuda a validar e corrigir implantações do Kubernetes para garantir que as práticas recomendadas de configuração sejam seguidas. Caso contrário, será muito fácil para alguém implantar um aplicativo que não atenda às práticas recomendadas de confiabilidade, eficiência de custos e segurança.
As soluções automatizadas de gerenciamento de políticas podem analisar sua carga de trabalho e dados de cluster para identificar cargas de trabalho com provisionamento excessivo ou insuficiente. Automatizar o processo de identificação de oportunidades de redimensionamento pode ajudar você a economizar tempo e recursos. Quando as cargas de trabalho são superprovisionadas, o Kubernetes pode aumentar mais do que o necessário, enquanto as cargas de trabalho sub-provisionadas ficarão sem memória ou ficarão com restrição de CPU (resultando em degradação de desempenho, aumento de erros, redução de rendimento ou interrupções). Você também pode monitorar o uso de recursos ao longo do tempo e ajustar suas políticas de redimensionamento conforme necessário. Isso pode ajudá-lo a garantir que suas cargas de trabalho do Kubernetes continuem a ser dimensionadas corretamente, mesmo quando as cargas de trabalho e os clusters mudam.
Economize dinheiro e melhore o desempenho com o Rightsizing
Os custos de computação do Kubernetes podem ser significativos, especialmente para organizações que implantam vários clusters em produção. O Rightsizing pode ajudar a reduzir estes custos, garantindo que cada carga de trabalho tenha os recursos necessários, mas não mais. O redimensionamento também pode melhorar o desempenho, garantindo que cada carga de trabalho tenha os recursos necessários para funcionar com eficiência, mantendo seus aplicativos e serviços funcionando.
Artigo originalmente publicado em Blog CNCF