Iniciando com Kubernetes — Parte 1/2

Edwildson Coelho Rodrigues
sysvale
Published in
8 min readMay 30, 2023

Salve guys!

Eu me chamo Edwildson e sou desenvolvedor na Sysvale. Estão prontos para embarcar na jornada fascinante do Kubernetes? Se você está começando agora e deseja entender o que exatamente é essa tal de orquestração de contêineres, você está no lugar certo! Neste guia, vamos simplificar o Kubernetes para você que está dando os primeiros passos nesse mundo empolgante.

Imagem de rawpixel.com no Freepik

O Kubernetes é como um super-herói dos contêineres. Ele ajuda no gerenciamento de aplicativos e serviços que rodam dentro desses contêineres. Mas o que são contêineres? São como pacotes autossuficientes que abraçam tudo que seu aplicativo precisa para funcionar: código, bibliotecas, dependências e até configurações. E a orquestração é a prática de gerenciar um grupo de contêineres de forma eficiente.

O Kubernetes veio para simplificar a vida dos desenvolvedores. Com ele, você pode se concentrar em criar seus aplicativos incríveis sem se preocupar tanto com a infraestrutura por trás. Ele possui recursos poderosos, como dimensionamento automático, recuperação automática de falhas e distribuição de carga. Tudo isso para manter seus aplicativos em execução de maneira confiável, mesmo em situações desafiadoras.

Neste artigo, vamos abordar os conceitos fundamentais do Kubernetes, bem facinho. Vamos mostrar como configurar seu ambiente, criar um cluster do Kubernetes e implantar seus aplicativos. Vamos também explorar as principais ferramentas do Kubernetes, como Pods, Services e Deployments.

Fundamentos do Kubernetes:

O Kubernetes é uma plataforma de código aberto que permite a orquestração de contêineres. Mas o que isso realmente significa? Vamos desvendar!

Contêineres: Comecemos com o conceito de contêineres. Eles são como pacotes que contêm todos os componentes necessários para executar um aplicativo, incluindo código, bibliotecas e dependências. Os contêineres são leves, portáteis e isolados uns dos outros, o que facilita a implantação consistente de aplicativos em diferentes ambientes.

Orquestração: Agora, imagine que você tem vários contêineres de diferentes aplicativos que precisam ser implantados, gerenciados e escalados. Aqui é onde entra a orquestração. O Kubernetes permite coordenar e automatizar todas essas tarefas complexas para que seus contêineres funcionem em harmonia.

Unidades básicas do Kubernetes:

  • Pod: É a unidade fundamental no Kubernetes. Um pod é um grupo de um ou mais contêineres que compartilham o mesmo ambiente de execução, como endereço IP e espaço de armazenamento. Os contêineres em um pod são geralmente co-localizados e se comunicam entre si.
  • Node (nó): É uma máquina (física ou virtual) que executa o Kubernetes. Cada nó é responsável por executar os contêineres e outros componentes do Kubernetes.
  • Cluster: É um conjunto de nós (nodes) que trabalham juntos para executar aplicativos. O Kubernetes gerencia e distribui as tarefas de forma inteligente entre os nós do cluster para garantir que tudo funcione de maneira eficiente e resiliente.
  • Serviço (Service): É um recurso abstrato que define um conjunto lógico de pods e uma política de acesso a esses pods. Um serviço permite que os pods sejam descobertos e acessados de forma confiável, independentemente de sua localização no cluster.

Esses são apenas alguns dos conceitos básicos do Kubernetes. À medida que você se aprofunda, descobrirá mais recursos e conceitos poderosos que o Kubernetes oferece.

Configuração do Ambiente:

Configurando o ambiente.
Imagem de pressfoto no Freepik

Antes de começar a utilizar o Kubernetes, é importante configurar o ambiente de maneira adequada.

  1. Opções de instalação do Kubernetes em diferentes plataformas:
  • Instalação local: Você pode instalar o Kubernetes em seu ambiente de desenvolvimento local usando ferramentas como Minikube ou Kind. Isso permite que você experimente o Kubernetes em uma configuração de cluster de um único nó.
  • Nuvem pública: As principais provedoras de nuvem pública, como Amazon Web Services (AWS), Google Cloud Platform (GCP) e Microsoft Azure, oferecem serviços gerenciados de Kubernetes, como o Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE) e Azure Kubernetes Service (AKS). Essas opções simplificam a configuração e o gerenciamento do cluster Kubernetes em uma infraestrutura em nuvem.
  • Nuvem privada: Se você possui uma infraestrutura própria, é possível implantar o Kubernetes em um ambiente de nuvem privada usando ferramentas como o Rancher ou OpenShift. Essas soluções permitem a criação e o gerenciamento de clusters Kubernetes em sua própria infraestrutura.

2. Requisitos de hardware e software:

  • Hardware: Os requisitos de hardware podem variar dependendo do tamanho do cluster e dos recursos necessários para suas cargas de trabalho. Em geral, você precisará de nós (nodes) com recursos como CPU, memória e armazenamento suficientes para executar os contêineres e os serviços do Kubernetes de maneira eficiente. Além disso, é recomendável ter uma rede com boa conectividade entre os nós do cluster.
  • Software: O Kubernetes pode ser executado em diferentes sistemas operacionais, incluindo Linux, Windows e macOS. Você precisará de uma versão compatível do sistema operacional, além de ferramentas como o Docker para executar os contêineres. É importante garantir que as versões do Kubernetes, Docker e outras dependências estejam em conformidade com os requisitos da versão que você está instalando.

3. Ferramentas úteis para o gerenciamento do Kubernetes:

  • Kubectl: É uma ferramenta de linha de comando utilizada para interagir com o cluster Kubernetes. Ela permite criar, modificar e gerenciar recursos no cluster, além de fornecer informações sobre o estado do cluster e dos pods.
  • Dashboard: O Kubernetes Dashboard é uma interface gráfica que fornece uma visão geral do cluster e permite visualizar e gerenciar os recursos do Kubernetes de forma intuitiva. É uma opção conveniente para aqueles que preferem uma abordagem mais visual.
  • Helm: É um gerenciador de pacotes para o Kubernetes que simplifica a implantação e o gerenciamento de aplicativos. Com o Helm, você pode instalar, atualizar e desinstalar aplicativos em seu cluster Kubernetes de forma simples e padronizada.
  • Monitoramento e logs: Existem várias ferramentas de monitoramento e logs disponíveis para o Kubernetes, como o Prometheus e o Grafana. Essas ferramentas permitem monitorar a saúde do cluster, coletar métricas e analisar registros para solução de problemas e otimização de desempenho.

Lembre-se de consultar a documentação oficial do Kubernetes e das ferramentas específicas para obter instruções detalhadas sobre como configurar o ambiente de acordo com sua plataforma e requisitos específicos.

Criação do Primeiro Cluster:

Criando o primeiro cluster.
Imagem de svstudioart no Freepik

Segue um passo a passo simplificado para criar um cluster Kubernetes básico usando a ferramenta Minikube:

  1. Instalação do Minikube e das dependências:
  • Verifique se você tem o hypervisor adequado instalado em sua máquina, como o VirtualBox ou o KVM, dependendo do seu sistema operacional.
  • Faça o download e instale o Minikube de acordo com as instruções específicas do seu sistema operacional.

2. Inicialização do cluster com Minikube:

  • Abra um terminal ou prompt de comando e execute o seguinte comando: minikube start. Isso irá inicializar o cluster Kubernetes local usando o Minikube.
  • Aguarde enquanto o Minikube configura o cluster. Isso pode levar alguns minutos.

3. Verificação do cluster:

  • Após a inicialização bem-sucedida, execute o comando kubectl cluster-info para verificar o estado do cluster e obter informações sobre o servidor API do Kubernetes.
  • Execute o comando kubectl get nodes para verificar se o nó do cluster está em execução e pronto para receber cargas de trabalho.

4. Implantação de um aplicativo de exemplo:

  • Você pode implantar um aplicativo de exemplo para testar o cluster. Por exemplo, execute o comando kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4 para implantar um aplicativo "echoserver" simples no cluster.
  • Em seguida, execute o comando kubectl expose deployment hello-minikube --type=NodePort --port=8080 para expor o aplicativo como um serviço no cluster.

5. Acesso ao aplicativo:

  • Para acessar o aplicativo, execute o comando minikube service hello-minikube para abrir o aplicativo no navegador padrão.
  • Você verá uma página exibindo uma resposta do aplicativo “echoserver”, confirmando que o aplicativo foi implantado com sucesso.

Esse é um exemplo simplificado de criação de um cluster Kubernetes usando o Minikube.

Implantação e Gerenciamento de Aplicações:

Gerenciando contêiners
Imagem de pressfoto no Freepik

Implantar e gerenciar aplicações no Kubernetes é uma das principais vantagens dessa plataforma.

  1. Criação de imagens de contêineres adequadas para o Kubernetes:
  • Escolha uma base adequada: Comece selecionando uma imagem base adequada para o seu aplicativo. Existem várias opções disponíveis, como imagens oficiais do Docker Hub ou imagens personalizadas baseadas em suas necessidades específicas.
  • Dockerfile: Utilize um arquivo Dockerfile para definir as etapas necessárias para criar a imagem do contêiner. O Dockerfile contém as instruções para instalar dependências, configurar o ambiente e copiar os arquivos do aplicativo para o contêiner.
  • Build da imagem: Utilize o comando docker build para construir a imagem do contêiner com base no Dockerfile. Certifique-se de especificar um nome e uma tag adequados para a imagem.
  • Registro de imagens: Envie a imagem criada para um registro de imagens, como o Docker Hub ou um registro privado, para que ela possa ser acessada pelos nós do cluster Kubernetes durante a implantação.

2. Implantação de uma aplicação em um cluster Kubernetes:

  • Manifesto de implantação: Crie um manifesto de implantação em formato YAML ou JSON para definir como a aplicação deve ser implantada no cluster Kubernetes. O manifesto inclui detalhes como nome da implantação, imagem do contêiner, portas expostas, réplicas desejadas e outros recursos necessários.
  • Aplicação do manifesto: Utilize o comando kubectl apply -f <nome-do-arquivo.yaml> para aplicar o manifesto de implantação ao cluster. Isso iniciará o processo de implantação da aplicação nos nós disponíveis.
  • Verificação da implantação: Utilize o comando kubectl get deployments para verificar o status da implantação da aplicação. Você poderá ver o número de réplicas em execução, a disponibilidade e outros detalhes relevantes.

3. Escalonamento, atualização e rollbacks de aplicações:

  • Escalonamento: Utilize comandos como kubectl scale para aumentar ou diminuir o número de réplicas de uma implantação. Isso permite ajustar a capacidade da aplicação de acordo com as demandas do tráfego.
  • Atualização: Para atualizar a aplicação, faça alterações no manifesto de implantação, como a versão da imagem do contêiner. Em seguida, utilize o comando kubectl apply -f <nome-do-arquivo.yaml> novamente para aplicar as alterações ao cluster. O Kubernetes irá gerenciar a atualização de forma gradual e controlada, garantindo a disponibilidade contínua da aplicação.
  • Rollbacks: Em caso de problemas com uma atualização, é possível realizar um rollback para uma versão anterior da aplicação. Utilize o comando kubectl rollout undo deployment <nome-da-implantação> para reverter para a versão anterior da implantação.

4. Monitoramento e logs das aplicações:

  • Monitoramento: Utilize ferramentas de monitoramento, como Prometheus e Grafana, para coletar métricas e monitorar o desempenho da aplicação no cluster Kubernetes. Configure alertas para ser notificado em caso de problemas.

Para que este artigo não se torne cansado para se ler este foi dividido em 2 partes. Então nos vemos lá, até mais!

Sobre o autor: Edwildson Coelho Rodrigues — É desenvolvedor na Sysvale Softgroup e formando no curso de Engenharia da Computação.

--

--