Kubernetes: como evitar drawbacks e interrupções de serviço

Nos últimos anos, os Kubernetes emergiram como um dos métodos mais populares e confiáveis para hospedar aplicações. Um relatório recente da Sysdig revelou que quase 90% dos deploys de contêiner estão sendo realizados em Kubernetes.

Essa estatística mostra a importância crítica dos sistemas Kubernetes em todo o mundo, pois muitas organizações dependem de sua estabilidade e alta disponibilidade. Neste cenário, até mesmo uma pequena interrupção nos serviços Kubernetes pode ter consequências, incluindo perdas financeiras significativas, danos à reputação e muito mais.

Apesar de sua popularidade e eficácia inegáveis, gerenciar um ambiente Kubernetes não é uma tarefa simples. A complexidade inerente dessa plataforma exige um entendimento profundo de sua arquitetura e operações.

Com inúmeras configurações e a necessidade de manutenção contínua, gerir Kubernetes pode se tornar uma tarefa abrangente e desafiadora. Empresas de todos os tamanhos enfrentam desafios na otimização de desempenho, escalabilidade, segurança e consistência ao implementar Kubernetes em seus ambientes de TI.

Relatórios como os da Dynatrace revelam como as estratégias de multicloud aumentaram a complexidade da gestão da performance de software, ressaltando a importância de especialistas qualificados. Casos reais, como os enfrentados por empresas como Preply, Spotify e Adevinta, ilustram claramente como falhas no gerenciamento de Kubernetes podem levar a interrupções significativas e outros problemas operacionais.

Para saber como gerenciar Kubernetes com eficácia, continue a leitura:


O que é e para que serve Kubernetes?

O Kubernetes é uma plataforma de código aberto para gerenciar clusters de aplicativos e serviços em contêineres. Ele foi desenvolvido em 2014 pelos engenheiros do Google Joe Beda, Brendan Burns e Craig McLuckie. Rapidamente após seu desenvolvimento, ele se tornou open source.

Qual é a função do Kubernetes?

O Kubernetes é usado para criar aplicativos fáceis de gerenciar e implantar em qualquer lugar. Quando disponível como um serviço gerenciado, o Kubernetes oferece uma variedade de soluções para atender às suas necessidades, como por exemplo:

Aumentar a velocidade de desenvolvimento

O Kubernetes auxilia na criação de aplicativos baseados em microsserviços nativos da nuvem. Ele também suporta a conteinerização de apps existentes, tornando-se assim a base da modernização de aplicações e permitindo o desenvolvimento mais ágil de aplicativos.

Implantar aplicativos em qualquer lugar

O Kubernetes foi desenvolvido para ser usado em qualquer lugar, permitindo a execução dos aplicativos em implantações no local e em nuvens públicas; bem como em implantações híbridas entre os dois.

Executar serviços eficientes

O Kubernetes pode ajustar automaticamente o tamanho de um cluster necessário para executar um serviço. Isso permite escalonar automaticamente os aplicativos, para mais e para menos, com base na demanda e executá-los com eficiência.

Quais são os benefícios do Kubernetes?

Comumente conhecido como “sistema operacional para a nuvem”, o Kubernetes se tornou um ecossistema nativo da nuvem próspero, isso porque ele facilita a execução de tarefas associadas à implantação e ao gerenciamento de aplicações, oferecendo orquestração automatizada de contêineres, melhorando a confiabilidade e reduzindo o tempo e os recursos atribuídos às operações diárias.

Outros benefícios do Kubernetes são:

Operações automatizadas: o Kubernetes tem comandos integrados para lidar com grande parte do trabalho pesado que envolve o gerenciamento de aplicativos, permitindo automatizar as operações diárias, para garantir que os aplicativos estão sendo executados da maneira desejada.

Abstração de infraestrutura: ao instalar o Kubernetes, ele lida com a computação, a rede e o armazenamento em nome das suas cargas de trabalho. Isso permite que os desenvolvedores se concentrem nos aplicativos e não no ambiente subjacente.

Monitoramento da integridade do serviço: o Kubernetes executa verificações de integridade continuamente nos seus serviços, reiniciando os contêineres que falharam ou pararam e só disponibiliza os serviços aos usuários quando confirma que eles estão em execução.

Isso significa que com o Kubernetes, as organizações podem:

  • Escalar automaticamente;    
  • Aumentar ou diminuir implantações, dependendo da demanda;
  • Descobrir serviços;
  • Encontrar serviços em contêineres por meio do DNS ou do endereço IP;
  • Balancear cargas;     
  • Estabilizar a implementação distribuindo o tráfego de rede;
  • Gerenciar armazenamento;  
  • Escolher armazenamento local ou em nuvem;
  • Controlar versões;    
  • Escolher os tipos de contêineres que deseja executar e quais substituir usando uma nova imagem ou recursos de contêiner;
  • Manter a segurança; 
  • Atualizar com segurança senhas, tokens OAuth e chaves SSH relacionadas a imagens de contêiner específicas.

Quais são os desafios de usar o Kubernetes?

Mesmo que o Kubernetes seja altamente combinável e possa suportar qualquer tipo de aplicação, ele é complexo e requer conhecimento para orquestrá-lo corretamente.

O Kubernetes nem sempre é a solução correta para uma determinada carga de trabalho e é por isso que o ecossistema Kubernetes contém uma série de ferramentas nativas de nuvem relacionadas que as organizações criaram para resolver problemas específicos de carga de trabalho.

Além disso, há outros riscos associados que podem impactar de forma considerável uma operação:

  • Complexidade: configurações ineficientes e problemáticas podem causar desperdícios de recursos, com aumento imprevisto nos custos e, em casos mais extremos, à indisponibilidade total das aplicações;

  • Escalabilidade: sem uma gestão adequada, as aplicações podem não escalar eficientemente, afetando o desempenho durante picos de demanda, gerando a insatisfação e perdas ao negócio;

  • Segurança: configurações inadequadas podem expor a empresa a vulnerabilidades de segurança;

  • Inconsistências: diferenças em ambientes podem levar a falhas e bugs inesperados à produção.

A Dynatrace realizou uma pesquisa global independente com 1.300 CIOs e profissionais de TI sênior envolvidos no gerenciamento de infraestrutura de tecnologia. O estudo revelou os desafios que as organizações enfrentam a partir da adoção de ambientes multicloud para alcançar a agilidade e a escalabilidade necessárias para acompanhar o ritmo da transformação digital.

A análise indica que as estratégias de multicloud levaram a um aumento na complexidade da gestão da performance de software nas organizações. Quase metade (42%) do tempo das equipes de TI é desperdiçado em trabalho manual e rotineiro para “manter as luzes acesas” em seus ambientes, criando um grande dreno de produtividade e levando à perda de oportunidades de receita devido a atrasos na inovação.

Como resultado, as equipes estão gastando mais tempo em tarefas manuais e rotineiras, o que limita sua capacidade de acelerar a inovação e destaca a necessidade de maior uso de Inteligência Artificial e automação.

O relatório “The move to multicloud environments has broken traditional approaches to infrastructure monitoring”, mostrou que:

•  As organizações contam com sete soluções diferentes de monitoramento de infraestrutura, em média, para gerenciar ambientes multicloud; Para 57% dos profissionais ouvidos, o uso de múltiplas plataformas dificulta a otimização da performance da infraestrutura e do consumo de recursos;

•  81% dos líderes de TI dizem que o uso do Kubernetes tornou sua infraestrutura mais dinâmica e desafiadora de gerenciar;

• 56% entrevistados dizem que as soluções tradicionais de monitoramento de infraestrutura não são mais adequadas em um mundo de multicloud e Kubernetes;

•  61% dos líderes de TI dizem que os pontos cegos de observabilidade e monitoramento em seus ambientes multicloud estão se tornando um risco maior para a transformação digital, pois as equipes se encontram sem uma maneira fácil de monitorar sua infraestrutura de ponta a ponta;

•  58% dos líderes de TI dizem que o gerenciamento de infraestrutura consome cada vez mais recursos, à medida que o uso de serviços de computação em nuvem aumenta, forçando as equipes a alternar constantemente entre diferentes soluções e painéis para obter insights.

>>Leitura recomendada: Cloud Management: processos de gerenciamento de nuvem que fazem a diferença

O que acontece quando a gestão do Kubernetes falha?

Como vimos, o Kubernetes é um sistema complexo, que possui muitas peças em movimento. Isso significa que, de acordo com as circunstâncias, as interrupções nem sempre são fáceis de depurar e resolver, podendo causar danos significativos.

Abaixo, levantamos 3 casos diferentes em relação a falha dos Kubernetes e como eles foram solucionados.

Preply: interrupção parcial de serviços

No final de fevereiro de 2020, o Preply, um aplicativo de aprendizado de idiomas, sofreu uma interrupção parcial que tornou seus serviços indisponíveis para alguns usuários. O problema foi detectado em apenas 4 minutos, sendo resolvido em mais 22 minutos.

A resolução foi rápida, graças às boas práticas de monitoramento adotadas pela empresa e porque os limites de node não foram atingidos. Foi detectado um aumento de quase 500% em três de seus serviços em poucos minutos.

Dada a magnitude altamente incomum da carga, os engenheiros começaram imediatamente a solucionar o problema. A causa era clara e ocorreu porque o proxy Kube não conseguiu excluir uma linha antiga da tabela conntrack. Como a tabela conntrack não foi atualizada com precisão, alguns serviços ainda estavam sendo roteados para pods excluídos.

Depois que a equipe identificou o problema, ela executou um deploy no cluster para criar novos nodes. Em seguida, o time utilizou automações para normalizar completamente a operação do Preply.

Spotify: exclusão acidental de cluster

Esse caso aconteceu por conta de um erro humano, mas é algo comum e para o qual é necessário estar preparado.

Em 2018, logo após terem migrado para o Kubernetes, um dos engenheiros do Spotify excluiu acidentalmente o cluster regional dos EUA pensando que era um cluster de teste que ele havia criado. A limpeza demorou mais de 3 horas devido a muitos problemas nos scripts de implantação do cluster que tornavam necessário reiniciar após cada falha.

Pouco depois disso, um pull request equivocado – causado por uma confusão na configuração – um engenheiro acabou matando dois clusters regionais.

Esses dois casos foram resolvidos e, a partir deles, foram estabelecidas novas diretrizes para evitar repetições no futuro. As resoluções de longo prazo incluíram backup de clusters, codificação de infraestrutura, facilitação da restauração e simulação de cenários de recuperação de desastres com suas equipes.

Adevinta: 10 vezes mais latência do que o normal com Kubernetes

A Adevinta, empresa multinacional de tecnologia focada em marketplaces digitais, passou por uma situação em que ao comparar duas aplicações uma delas estava apresentando um tempo de resposta 10 vezes maior.

A empresa realizou vários diagnósticos começando por consultas DNS em ambas as instâncias, nas quais eles encontraram algum atraso nos tempos de resolução, mas isso estava longe de ser dez vezes o tempo de resposta.

Além disso, havia um erro na forma em que os requests estavam sendo tratados, já que múltiplas consultas eram manipuladas em um único pedido, o que estava tornando as respostas da nuvem lentas.

Acontece que essas múltiplas consultas faziam parte das políticas de autorização do Kubernetes. A primeira era consultar o papel associado à instância, e a segunda era solicitar credenciais temporárias para acessar a instância.

A Adevinta sabia que isso poderia se tornar um gargalo, mas por algum motivo, eles não configuraram isso bem como resultado. A AWS estava atualizando as credenciais assim que restavam 15 minutos no tempo de expiração, aumentando assim o tempo de latência.

Qual a melhor forma de usar Kubernetes?

Embora o Kubernetes facilite a gestão de aplicações, ele apresenta desafios e limitações que podem ser superados com a ajuda de um parceiro de tecnologia, como a Opus, onde você poderá contar com profissionais especializados, que podem agregar ainda mais valor, como:

  • Tranquilidade: os clientes podem se concentrar em novas iniciativas de negócio sem se preocupar com a operação;
  • Redução de custos: planejamento, otimização e gestão eficiente de recursos diminuem custos operacionais;
  • Aumento da eficiência: automatizações e melhorias contínuas mitigam eventuais falhas;
  • Inovação e competitividade: a capacidade de adaptação rápida a novas demandas permite inovar e possibilita o aumento de competitividade no mercado.

Conte com a Opus Software para auxiliar a sua equipe no setup e manutenção (sustentação) dos ambientes, para evitar drawbacks. Vamos conversar?

squads ágeis

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Newsletter

Insights de tecnologia para você!

Não compartilharemos seu e-mail com terceiros e também prometemos não enviar spams. Ao informar seu e-mail, você concorda com nossa Política de Privacidade.

Conteúdos relacionados

Veja nesse artigo de Edison Kalaf, sócio diretor da Opus Software, como a TI não é apenas operacional, mas um agente ...
Confira como funciona a Inteligência Artificial Geral, os impactos sociais e éticos dessa tecnologia e o que podemos ...
Descubra adotar a IA generativa nas empresas e potencializar a produtividade e inovação das equipes de TI no desenvol...