Por que usar Kubernetes?
Em pleno 2024, é quase certo que você já ouviu falar de Kubernetes. Se você está começando agora, este artigo é perfeito para você! Vamos guiá-lo pelos primeiros passos com Kubernetes de forma simples e direta.
Você aprenderá não apenas como configurar seu próprio cluster Kubernetes, mas também entenderá os benefícios que ele traz para seus projetos, além de dicas importantes para evitar armadilhas comuns.
Esta é uma série de artigos, passando por cada um dos Cloud Providers. Então, não perca nenhum em nosso blog.
Quais os benefícios de utilizar Kubernetes em seus ambientes?
Escalabilidade: O Kubernetes simplifica a escalabilidade dos seus aplicativos, permitindo que você os dimensione com facilidade à medida que sua demanda cresce.
Resiliência: Com Kubernetes, seus aplicativos são altamente resilientes. Ele detecta e substitui automaticamente contêineres ou nós com falhas, mantendo seus aplicativos em execução de forma confiável.
Portabilidade: Kubernetes é uma plataforma de código aberto e pode ser executado em praticamente qualquer ambiente, seja localmente, em nuvens públicas ou privadas. Isso oferece a flexibilidade de mover seus aplicativos entre diferentes provedores de nuvem sem grandes modificações.
Automação: Com Kubernetes, você pode automatizar tarefas de implantação, atualização e dimensionamento de aplicativos, economizando tempo e reduzindo erros humanos.
Ecossistema Gigante: Kubernetes possui um vasto ecossistema de ferramentas e serviços, facilitando a integração com outras tecnologias e acelerando o desenvolvimento de aplicativos.
Pequeno histórico
Aqui alguns dos momentos mais importantes na história do Google Kubernetes Engine (GKE):
2015: GKE se torna geralmente disponível, oferecendo Kubernetes como um serviço gerenciado na Google Cloud Platform (GCP).
2016: GKE adiciona suporte para Ingress, facilitando a gestão do tráfego de entrada para os serviços.
2017: Introdução de clusters regionais no GKE, aumentando a alta disponibilidade e resiliência.
2018: Lançamento do GKE Autopilot, uma opção gerenciada que automatiza as operações do Kubernetes, permitindo que os desenvolvedores se concentrem em aplicações e não se preocupem com tarefas repetitivas de operações.
2019: Google anuncia Anthos, uma plataforma híbrida e multi-cloud que inclui GKE, permitindo a execução de Kubernetes on-premises e em várias nuvens públicas de forma unificada.
2021: Introdução do GKE Gateway Controller, facilitando a configuração e gestão de gateways de API para serviços Kubernetes.
2023: Lançamento de ferramentas de otimização de custos no GKE, permitindo melhor gestão e visibilidade financeira dos recursos no Kubernetes.
Hands-on
Então esta é a hora de colocar esse tal de Kubernetes para funcionar.
Como este é um artigo bem direto ao ponto, vamos criar um cluster usando a ferramenta nativa da Google, “gcloud”, ele pode ser a alternativa mais simples ao clickops e pretendo escrever mais sobre isso no futuro.
Instalando a CLI “gcloud” no linux (outros: aqui)
Criando um cluster
Para evitar criar um cluster já com máquinas muito grandes, vamos utilizar a opção “n1-standard-1”:
Antes de criar o cluster propriamente dito é necessário logar com a CLI:
1- Iniciando e fazendo login com a CLI
2- Defina o ID do seu projeto GCP:
3- Defina a zona onde será criado o cluster:
4- Crie um cluster mínimo com a máquina básica n1-standard-1
Não se esqueça de deletar esse cluster de testes
PS: com uma conta Google comum, você pode se cadastrar no GCP e iniciar seus labs com os créditos gratuitos, dá pra treinar bastante coisa!
Benefícios exclusivos
Apesar de ser considerado “pai” do Kubernetes a GCP permanece em terceiro lugar na corrida de cloud providers, mas isso não representa nem de longe que seus serviços tenham menor qualidade ou menor features, pelo contrário, a experiência nos mostra que a maioria de novas features adotadas em Kubernetes saem primeiro para GKE e sua integração é mais estável desde o início.
Um destaque nos serviços ligados à Kubernetes no Google que gostaria de listar aqui é o modo “AutoPilot” do GKE. Este modo lhe provê uma maior automação por parte do Google, ele irá tomar ações mais “intrusivas” no cluster que visam é claro a estabilidade, porém como qualquer serviço tem prós e contras e o contra aqui é que após criado um cluster na opção “Autopilot” esta não pode ser desfeita, um novo cluster precisará ser criado, porém, ainda como benefício é que o grande custo em cloud providers é de recursos computacionais, ou máquinas, e este modelo tomará conta do escalonamento de máquinas para você, acompanhando seus workloads.
Custos
Apenas o serviço GKE tem um custo direto mensal médio de $73 e, além disso, você deve levar em conta os custos de cada node ou instâncias, custos de storage, de networking entre outros, como isso pode variar muito você pode avaliar antecipadamente na calculadora da GCP.
Existem alguns tradeoffs pouco falados quanto a otimização de custos, onde a resiliência e disponibilidade podem ficar comprometidas, tenha uma mentalidade de redução de custos, mas entenda que o serviço continua tendo seu preço.
Dicas de atenção
Antes de criar seu GKE, crie uma VPC grande, mas com subnets com tamanho suficiente para services, pods e nodes, isso lhe poupará trabalho futuro;
O uso de nodes spot ou preemptivos (diminui o custo em até 70% em relação a ondemand) use e abuse, mas use taints para aplicações que podem ser desalocadas a qualquer momento, pois isso acontecerá com frequência.
No cenário de uso de máquinas spot/preempivivas, ajuste o kube-dns-autoscaler e tenha no mínimo um nodepool on-demand para apps criticas do GKE;
Não recomendamos que use o cloud logging e cloud monitoring, eles veem ativado por padrão se você não desligar, estes são caros e limitados;
Para economizar no outbound de rede, prefira clusters em uma única zona, e todos os outros recursos GCP nessa mesma zona;
Não esqueça de configurar uma janela de manutenção compatível com seu negócio, pois a GCP irá interagir com seus nodes e masters, por exemplo;
Não recomendamos o uso do serviço Backup do GKE ele é bem caro, usando Velero, por exemplo, terá apenas o custo de storage e este é um projeto amplamente adotado;
Recomendamos que configure seu cluster com “external endpoint”, mas “private cluster”, e use os recursos de integração com o Google Workspace para dar acesso a quem realmente pode e precisa acessar seu GKE;
Por fim, economize com a opção de “AutoscalingProfile” em “optmize-utilization”, ele vai subir e descer nodes mais rapidamente, evitando o custo de máquinas ociosas por 10 minutos num cenário de elasticidade muito dinâmica.
Próximos passos
Não basta apenas ter um cluster Kubernetes. O Kubernetes abrange uma ampla gama de infraestrutura, incluindo networking, storage, processamento, entre outros. Isso resulta em uma carga cognitiva massiva e quase impossível de dominar todos os detalhes necessários, especialmente considerando que a cada 4 meses temos uma nova versão. Sua jornada cloud native com Kubernetes está apenas começando, e você certamente se deparará com todo um ecossistema de ferramentas, como monitoramento, logs centralizados, CI/CD e, é claro, suas próprias aplicações.
Então não perca nossos próximos conteúdos aqui no blog, acompanhe também o Kubicast, onde você poderá ouvir sobre experiências, cases e aprender muito sobre o mundo cloud native.
Até a próxima com um novo cloud provider!