O Kubernetes é o software de orquestração de contêineres de código aberto que literalmente tomou o mundo dos aplicativos em contêineres de assalto nos últimos anos. Mantendo com sucesso uma fatia esmagadora de seu mercado, o Kubernetes de fato se estabeleceu como um padrão da indústria para orquestração de contêineres.
O Kubernetes e arquiteturas de serviços semelhantes baseadas em contêineres afetaram fundamentalmente o fluxo de trabalho das equipes de TI que trabalham com testes e implantação de software devido a uma abordagem diferente para esses processos: agora, as empresas, independentemente do tamanho e do número de engenheiros, têm a capacidade de implantar inúmeras instâncias de contêiner por dia quase sem esforço.
No entanto, há também um outro lado da moeda, que são os novos desafios e problemas acarretados pela necessidade de implementar e manter um ecossistema de infraestrutura fundamentalmente diferente. Em particular, algumas das armadilhas mais sensíveis são aquelas relacionadas ao desempenho – falamos sobre elas em um de nossos artigos anteriores.
Mas a popularidade do Kubernetes reside, em primeiro lugar, no fato de que suas inúmeras vantagens excedem em muito todas as dificuldades e desvantagens. Uma das vantagens inquestionáveis do software é que ele é agnóstico em relação à nuvem, o que significa que ele se adapta à grande maioria das empresas, independentemente da nuvem que elas já usam. Neste artigo, nós o guiaremos por como otimizar o custo do Kubernetes na AWS, uma das plataformas de nuvem mais populares, e compartilhar algumas práticas recomendadas com você.
Kubernetes na AWS
Como todos sabemos, a Amazon Web Services tem inúmeras soluções para diferentes casos de uso, e o EKS, que significa Elastic Kubernetes Service, é um deles. O Amazon EKS é um serviço gerenciado em contêineres para executar e dimensionar aplicativos Kubernetes tanto na nuvem quanto no local. Ele foi projetado e certificado como uma solução totalmente compatível com o Kubernetes.
Dito isso, com o EKS, a AWS pode gerenciar os nós mestres para você: desde a criação dos nós mestres até a instalação de todos os aplicativos necessários (incluindo tempo de execução do contêiner, processos mestres do Kubernetes, etc.) para dimensionar automaticamente e fazer backups quando necessário. Tudo isso torna o Kubernetes e a AWS uma ótima solução para muitas equipes de TI, especialmente as de pequeno porte, para se concentrarem na implantação de seus aplicativos em vez de se preocuparem com tarefas de manutenção mundanas desnecessárias.
Além disso, a Amazon Web Services garante alta disponibilidade em várias AZs, o que significa que os clusters do Kubernetes podem se beneficiar de latências baixas. Além disso, a AWS compreende uma variedade de serviços, incluindo Simple Cloud Storage (S3) e Relational Databases (RDS) que permitem o uso do Kubernetes para cargas de trabalho sem estado e com estado. Portanto, não é surpreendente que a AWS seja responsável pela maior parte de todas as cargas de trabalho do Kubernetes como resultado.
Otimização de custo de nuvem gratuita. Vida
Como economizar em custos de nuvem Kubernetes na AWS
A flexibilidade e facilidade de upscaling Serviços de nuvem AWS, juntamente com o poder do Kubernetes, tornam tentador gastar demais, então você não irá longe sem um gerenciamento de custos de nuvem adequado. Com isso em mente, vamos discutir o que pode ser feito para manter seus gastos com Kubernetes AWS sob controle.
1. Encerre os pods que não são necessários em momentos específicos ou que não são mais necessários
Algumas de suas instâncias, como desenvolvimento, teste, preparação, juntamente com certas ferramentas usadas por seus desenvolvedores, são necessárias apenas durante o horário comercial. Então, faz todo o sentido reduzir temporariamente o número de pods que são usados por essas instâncias e aplicativos. Na maioria dos casos, o Kubernetes Downscaler é usado para esse propósito. Ele tem diferentes configurações que permitem que os sistemas de agendamento aumentem ou diminuam em horários definidos. Algumas outras opções, como redução de escala nos fins de semana ou tempo de atividade extraordinário forçado, fornecem flexibilidade adicional.
Como já dissemos, o Kubernetes e os serviços de nuvem incentivam a agilidade e a alta velocidade de implantação. Mas trabalhar sob condições de rápida mudança significa que os ambientes implantados anteriormente para testes, visualizações, etc., muitas vezes permanecem não reivindicados, e ninguém controla sua presença e não os fecha. Para limpar clusters automaticamente, o Kubernetes Janitor é usado com frequência. Com ele, você pode definir o tempo de vida para todas as implantações temporárias ou para recursos separados - após um período especificado, eles serão excluídos automaticamente. Além disso, o Kubernetes Janitor permite que você remova volumes Amazon EBS (Elastic Block Store) não utilizados que são fáceis de ignorar e, portanto, aumentam Custos do Kubernetes por centenas de dólares por mês.
2. Use dimensionamento automático
A própria Amazon define o recurso de auto-scaling como o pilar de otimização de custos e, para usar esse recurso, você precisa executar a ferramenta Cluster Autoscaling. Ela executa duas funções principais: primeiro, ela pesquisa no cluster por pods que não têm recursos suficientes e, tendo-os encontrado, fornece nós adicionais; e, segundo, ela detecta nós que foram subutilizados e reprograma pods para outros nós.
3. Controle de solicitações de recursos
O Kubernetes define a carga na CPU e na memória por meio das chamadas solicitações de recursos. Essas solicitações reservam recursos em nós de trabalho, mas geralmente há uma diferença entre os recursos solicitados e realmente usados: uma reserva excedente, que também é chamada de folga. Quanto maior a folga, mais recursos e, consequentemente, o dinheiro é desperdiçado. A ferramenta Kubernetes Resource Report permite que você veja o excesso de recursos, bem como encontre locais específicos onde as solicitações de recursos podem ser reduzidas.
4. Use instâncias spot para cargas de trabalho do Kubernetes
Muitos concordam que instâncias spot são a melhor solução para nós de produção do Kubernetes. Instâncias spot são muito mais baratas do que instâncias reservadas e sob demanda; você também pode reservar essas instâncias por um período fixo de tempo. Como resultado, você pode obter um nó maior por menos. Além disso, usando as ferramentas certas de gerenciamento de carga de trabalho, você pode até usar instâncias spot para aplicativos de missão crítica também, o que não é recomendado em outras circunstâncias.
5. Use tags de alocação de custos da AWS
As tags de alocação de custos da AWS são metadados que podem ser atribuídos a cada um dos seus recursos da AWS para que você possa rastrear seus custos da AWS em detalhes. Assim, as tags podem ajudar você a gerenciar, identificar, organizar, pesquisar e filtrar os recursos que você está usando de forma personalizada: você pode criar tags para categorizar recursos por propósito, proprietário, ambiente ou outros critérios. Usando um estratégia de marcação sonora, você pode descobrir as fontes primárias de gastos e se alguma delas pode ser eliminada sem problemas. Em um dos nossos artigos anteriores, falamos sobre quais tags de alocação de custos da AWS existem e como usá-las corretamente.
Conclusão
Para aproveitar ao máximo a combinação do Kubernetes e do Amazon Web Services, aproveitando totalmente sua flexibilidade e escalabilidade, você precisa controlar e minimizar os custos por todos os meios. Neste artigo, demos as principais maneiras de reduzir o cheque e falamos sobre ferramentas nativas que permitem que você faça isso. No entanto, se você tem cada dólar na conta e deseja economia máxima, esses meios semiautomáticos não serão suficientes. É aqui que Hystax Optscale tem tudo o que você precisa. Nossa suíte oferece uma abordagem completamente diferente para Gerenciamento e otimização de custos do Kubernetes, o que pode resultar em uma redução drástica na sua conta, mantendo o mesmo nível de desempenho.
Encontre dicas úteis em como otimizar custos de TI em uma infraestrutura Kubernetes ou registre-se no OptScale e receba dezenas de recomendações de otimização.