Este whitepaper aborda os principais desafios de gerenciamento de infraestrutura do Kubernetes, fornece dicas técnicas e práticas recomendadas para fornecer visibilidade ao ambiente K8s, otimizar custos, superar problemas de configuração incorreta, melhorar o desempenho do Kubernetes e calcular economia de unidade para clusters Kubernetes.
As vantagens da infraestrutura do Kubernetes, como portabilidade e escalabilidade, sua base de código aberto e a capacidade de aumentar a produtividade do desenvolvedor, tornaram as tecnologias de contêiner uma escolha popular para muitas empresas, e o Kubernetes se tornou o padrão para executar aplicativos baseados em contêiner nas nuvens. Mais do que 80% das empresas hoje operam contêineres na produção e 78% deles usam serviços Kubernetes.
Como a infraestrutura em contêiner está obtendo ampla adoção e as tecnologias Kubernetes estão ganhando força, está se tornando crucial entender como obter uma imagem clara dos gastos com recursos K8s, aplicar oportunidades de otimização de custos e aprimorar Desempenho do Kubernetes.
A realidade mostra que não basta apenas usar o Kubernetes para obter o melhor valor das nuvens públicas. De acordo com um recente relatório StackRox, cerca de 70% das empresas detectaram configuração incorreta em seu ambiente Kubernetes.
Uma estrutura conteinerizada cria dificuldades significativas com a transparência, alocação e desempenho da nuvem que causam desafios no gerenciamento e otimização de recursos.
O whitepaper aborda os principais desafios de gerenciamento do desempenho do Kubernetes, descreve recomendações e dicas técnicas para alcançar a transparência dos clusters K8s e superar problemas de otimização e gerenciamento de custos.
Ele ajudará você a construir uma estratégia de gerenciamento sólida para o ambiente Kubernetes, dar um salto gigante na melhoria do desempenho do aplicativo e reduzir seu custo de infraestrutura.
Existem duas abordagens principais para a virtualização: máquinas virtuais (VMs) e contêineres virtuais, cada um com suas próprias vantagens e desvantagens. No primeiro caso, cada máquina usa seu sistema operacional convidado, o que oferece a oportunidade de criar ambientes de computação heterogêneos em um servidor físico. Os containers virtuais, por sua vez, ao invés de um SO possuem apenas um ambiente de usuário, o que possibilita a criação apenas de ambientes computacionais homogêneos.
No entanto, como as máquinas virtuais incluem um sistema operacional, elas podem ter vários gigabytes de tamanho – o que limita substancialmente sua utilidade no mundo ágil de hoje. Outra desvantagem das máquinas virtuais é que leva muito mais tempo para carregar o sistema operacional e seus aplicativos.
Os contêineres são mais leves e geralmente medidos em megabytes; e, o que é mais importante, eles são mais fáceis de dimensionar e implantar aplicativos. Isso cria um ecossistema de infraestrutura totalmente novo, o que significa novos desafios e complexidades. As empresas de TI, grandes corporações e start-ups, implantam milhares de instâncias de contêiner todos os dias e, portanto, precisam gerenciar essa quantidade esmagadora de alguma forma.
O Kubernetes, uma plataforma de orquestração de contêineres para implantação, dimensionamento e gerenciamento de aplicativos em contêineres, foi projetado como uma solução para esse problema. Com o tempo, o K8s tornou-se essencialmente a plataforma padrão do setor e o principal projeto da Cloud Native Computing Foundation, apoiado por líderes de mercado: Google, Amazon, Microsoft, IBM, Alibaba Cloud e muitos outros.
Devido às suas vantagens, o Kubernetes ganha popularidade, mas ao mesmo tempo traz dificuldades significativas para o rastreamento de custos da nuvem e gerenciamento financeiro.
Antes da adoção generalizada da tecnologia de conteinerização, a alocação de recursos em nuvem e a otimização do uso da nuvem eram muito mais fáceis. Bastava neste caso a atribuição de recursos específicos a um projeto ou departamento específico. Não será difícil para uma equipe de FinOps – se eles fizerem parte de sua equipe de TI – criar um detalhamento de custos de nuvem e montar uma estratégia de otimização de custos de nuvem. Se você gostaria de saber mais sobre o papel do FinOps e quais os benefícios potenciais que ele pode oferecer aos negócios, consulte um e-book "De FinOps a estratégias comprovadas de gerenciamento e otimização de custos de nuvem".
Infelizmente, essa abordagem é absolutamente inaplicável para ferramentas de conteinerização em geral e Kubernetes em particular. Qual é a razão pela qual os custos do Kubernetes são tão difíceis de definir e analisar?
A dificuldade em rastrear os custos do Kubernetes decorre de sua arquitetura. No núcleo do Kubernetes, existe um cluster que consiste em várias máquinas virtuais (ou físicas) – nós. Nesses nós, os contêineres são implantados e iniciados – na verdade, eles contêm vários aplicativos.
Agora, digamos que vários departamentos da sua empresa estejam trabalhando em vários aplicativos executados dentro de contêineres e, por acaso, compartilhem clusters Kubernetes comuns. É quase impossível determinar qual dos aplicativos iniciados usa qual parte dos recursos de quais clusters, porque cada um dos aplicativos é iniciado em vários contêineres ao mesmo tempo. Embora calcular o custo de um contêiner seja possível e não muito difícil por si só, ainda requer infraestrutura e tempo, e a complexidade cresce proporcionalmente ao número de contêineres usados.
Até agora, consideramos a situação dentro do quadro de uma nuvem. Mas e se sua empresa, como a maioria das organizações de TI modernas de hoje, usar o multicloud. Nesse caso, o monitoramento de custos aumentará muitas vezes – cada uma das nuvens dentro dessa multicloud pode ter um provedor de serviços diferente, assumindo apenas uma parte da carga de trabalho total porque o Kubernetes pode trabalhar com AWS, Microsoft Azure, Google Cloud Platform, Alibaba Nuvem e muitos outros.
Além disso, a intensidade de recursos de cada um de seus aplicativos pode mudar ao longo do tempo, o que impõe dificuldades adicionais no cálculo de custos. Assim, o fácil de usar Ferramentas VPA (Vertical Pod Autoscaler) e HPA (Horizontal Pod Autoscaler), que, respectivamente, ajustam automaticamente o limite do número de solicitações para um único contêiner e o número de contêineres usados, tornam-se variáveis adicionais difíceis de fatorar ao tentar rastrear e gerenciar os custos atuais do Kubernetes e, é claro, prever custos futuros .
Outro problema é que a vida útil de um contêiner é de apenas um dia e as funções sendo executadas no Kubernetes – até minutos ou até segundos. Novamente, essa dinâmica é definitivamente uma vantagem do ponto de vista de um engenheiro de TI, mas se torna uma dor de cabeça quando se trata de controle e gerenciamento de custos.
Como já dissemos, é muito difícil rastrear e gerenciar os custos do Kubernetes, mas ainda existem várias técnicas que podem ajudá-lo a analisar os custos do Kubernetes e, eventualmente, controlá-los.
Muito provavelmente, você está familiarizado com a marcação de recursos de nuvem. Quando se trata de Kubernetes, os chamados rótulos são usados em vez de tags. Se você e seus engenheiros cuidarem da rotulagem dos recursos utilizados, isso facilitará muito sua busca e identificação no futuro.
É importante ser inteligente sobre esse processo para que você possa posteriormente dividir seus recursos por vários parâmetros relevantes. A implementação bem-sucedida dessa estratégia exigirá a participação ativa de todos os membros da equipe de TI; caso contrário, essa ideia inicialmente boa pode levar a ainda mais confusão.
Sistemas de monitoramento de código aberto como o Prometheus podem ser uma grande ajuda na visualização de seus custos. E a visualização competente, por sua vez, é um salto gigantesco no caminho para uma análise competente.
O dimensionamento automático é um recurso matador do Kubernetes e, com a ajuda dele, é possível gerenciar facilmente as cargas de trabalho. Já mencionamos dois deles – Autoescalador vertical de pods e autoescalador horizontal de pods, mas na verdade existem mais dois disponíveis: Kubernetes Event-Driven Autoscaler e Cluster Autoscaler, onde o primeiro gerencia o dimensionamento de qualquer contêiner no Kubernetes com base no número de eventos a serem processados, enquanto o último lida com o dimensionamento automático no cluster e nível do nó. Dito isso, é um grande desafio fazê-los funcionar juntos adequadamente — não apenas você deve seguir as várias práticas recomendadas, mas também ajustar as configurações com base em seus cenários.
O custo do Kubernetes depende diretamente de quão bem as instâncias de nuvem são selecionadas. É importante garantir que o consumo de recursos dos pods do Kubernetes corresponda à quantidade de memória alocada e aos recursos de computação da instância, independentemente de qual provedor de nuvem é usado.
Recursos subutilizados e não utilizados são um dos primeiros itens a procurar por perdas diretas e espaço para otimização. Conforme mencionado anteriormente, os especialistas em TI preferem o desempenho à otimização de recursos, portanto, tendem a usar recursos em excesso. Apesar da perspectiva tentadora de abandonar imediatamente todas as capacidades ociosas, isso deve ser feito com sabedoria, para não excluir nada que se revele importante – o próximo ponto decorre disso.
O FinOps pode ajudar a resolver vários problemas ao mesmo tempo. Em primeiro lugar, passará mais responsabilidade aos especialistas técnicos pelo desempenho financeiro da empresa como um todo, e seus gastos com recursos de nuvem em particular. Em segundo lugar, pode se tornar o elo perdido que pode monitorar e gerenciar os custos do Kubernetes diariamente para que o escalonamento dos recursos utilizados ocorra quando for realmente necessário.
Como cada vez mais organizações estão expandindo o uso de orquestradores de contêineres e o Kubernetes está se tornando uma escolha popular para muitas empresas, é importante entender como fornecer total transparência nos recursos do K8s para atingir metas de otimização de custos e melhorias de desempenho.
As vantagens das tecnologias de contêiner, como portabilidade e escalabilidade, e sua base de código aberto tornaram o Kubernetes o padrão para executar aplicativos baseados em contêiner nas nuvens.
Felizmente, as plataformas de nuvem fornecem suporte e ajudam empresas de qualquer tamanho a adotar a tecnologia Kubernetes. Aqui está uma lista de serviços fornecidos pelas principais plataformas de nuvem:
Apesar das vantagens do Kubernetes, uma estrutura conteinerizada cria desafios com transparência de custos na nuvem, alocação que causam dificuldades significativas na gestão e otimização de recursos.
Um gerenciamento de nuvem eficaz precisa de visibilidade de custos; é crucial identificar unidades organizacionais como aplicativos, serviços de nuvem, pools de ativos, unidades de negócios, equipes, engenheiros individuais e mapeá-los nos custos da nuvem.
1250 Borregas Ave, Sunnyvale, CA 94089, EUA | [email protected]