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, vamos começar pela AWS.

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 Elastic Kubernetes Service (EKS) na AWS:

  • 2017: A AWS anuncia o Amazon Elastic Container Service for Kubernetes (EKS) na AWS re:Invent, oferecendo aos clientes a capacidade de executar o Kubernetes como um serviço gerenciado na AWS.

  • 2018: O Amazon EKS é disponibilizado para o público em geral (GA), permitindo que os clientes implantem e gerenciem facilmente clusters Kubernetes na AWS. Ainda neste ano a AWS anuncia a integração com o AWS Fargate, oferecendo aos clientes a opção com ainda mais abstrações.

  • 2019: A AWS lança o AWS App Mesh, um service mesh para Amazon EKS.

  • 2021: A AWS introduz o Amazon EKS Anywhere, permitindo que os clientes criem e gerenciem clusters Kubernetes em ambientes on-premise ou em outras nuvens.

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 AWS, eksctl, ele pode ser a alternativa mais simples ao clickops e pretendo escrever mais sobre isso no futuro.

Instalando eksctl no linux (outros: aqui)
# for ARM systems, set ARCH to: `arm64`, `armv6` or `armv7`
ARCH=amd64

PLATFORM=$(uname -s)_$ARCH

curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"

# (Optional) Verify checksum
curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check

tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz

sudo mv /tmp/eksctl /usr/local/bin
Criando um cluster

Para evitar criar um cluster já com umas máquinas muito grandes, vamos usar um arquivo de configuração básico aqui e criar esse cluster em 2 passos:


1 - Crie um arquivo “cluster-basico-config.yaml”

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: cluster-basico
  region: us-east-1
nodeGroups:
  - name: nodegroup-1
    instanceType: t4g.medium
    desiredCapacity: 2

2 - Execute o comando apontando para este arquivo:

eksctl create cluster -f cluster-basico-config.yaml

Aproveitei este arquivo de configuração aí acima para utilizar máquinas ARM, elas têm um custo bem menor mantendo uma ótima performance. Para mais opções, use a documentação: https://eksctl.io/usage/arm-support/

Não se esqueça de deletar esse cluster de testes
eksctl delete cluster --name=cluster-basico --region=us-east-1


Banner

Benefícios exclusivos

A AWS é líder no mercado de cloud e tem um portfólio de produtos vasto, serviços que você pode facilmente integrar com suas aplicações.

Uma dessas integrações é o serviço AWS Fargate, uma opção serverless onde a principal feature é não ter a necessidade de gerenciar os nodes de seu cluster Kubernetes. Recomendado se você busca uma operação mais simplificada. 

Custos

Apenas o serviço de EKS já tem um custo mensal médio de $73 e além disso você deve levar em conta os custos dos nodes que são as famosas EC2, custos de storage, de networking entre outros, como isso pode variar muito você pode avaliar antecipadamente na calculadora da AWS.

Uma dica para escolher o tamanho de seus nodes é uma calculadora lançada pela turma do LearnK8s.

Dicas de atenção

  • Um custo que pode impactar diretamente no seu billing é o tráfego entre zonas, muita atenção ao criar seu cluster multi-zone;

  • Na criação das subnets do cluster, atenção a quantidade de IPs pra subnet que vai ter nodes com mais IPs do que as que não terão;

  • Use o cluster Autoscaler  ou Karpenter com nodegroups configurados ao mínimo;

  • Utilize EBS CSI Driver;

  • Utilize máquinas de arquitetura ARM que têm um custo mais baixo.

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!

Social

Contact us

Almeda Campinas 802, CJ 12, Jardim Paulista,

São Paulo - SP, 01404-001

Opportunities

Our content

Social

Contact us

Almeda Campinas 802, CJ 12, Jardim Paulista,

São Paulo - SP, 01404-001

Opportunities

Our content

Social

Contact us

Almeda Campinas 802, CJ 12, Jardim Paulista,

São Paulo - SP, 01404-001

Opportunities

Our content