Entendendo o que são containers e Kubernetes

O que você aprenderá neste artigo

Este artigo tem como objetivo ensinar o básico sobre Kubernetes e como realizar sua instalação em sistemas Linux. No final desta leitura, você entenderá os conceitos fundamentais de containers, os elementos principais do Kubernetes, e como criar e gerenciar um pod.

O que é um container?

Um container é uma forma de executar sua aplicação de maneira isolada do sistema operacional hospedeiro. Ele inclui tudo o que é necessário para a execução, como código, bibliotecas e dependências. Essa abordagem garante que o executável não sofra interferências de outros processos no mesmo sistema.

A tecnologia que permite esse isolamento utiliza recursos do kernel, como cgroups (Control Groups), que limitam memória, CPU e outros recursos. Isso garante uma execução eficiente e previsível da aplicação.

Uma analogia: transporte de cargas

Imagine o transporte de mercadorias antes da invenção dos containers. O processo de carga e descarga era manual, lento e sujeito a perdas. Com a chegada dos containers, o transporte se tornou seguro, rápido e eficiente. Da mesma forma, os containers de software trazem padronização, segurança e facilidade na distribuição de aplicações.

Container Engine e Container Runtime

Container Engine

O container engine é responsável por fornecer o ambiente necessário para a execução de containers, incluindo rede, armazenamento e monitoramento. Exemplos incluem o Docker e o Podman.

Container Runtime

O container runtime é o componente que executa os containers nos nós. Ele gerencia operações de baixo nível, como inicialização, parada e exclusão de containers. Os runtimes podem ser de:

  • Baixo nível: Executados diretamente pelo kernel.
  • Alto nível: Dependem do container engine e oferecem interfaces mais amigáveis.

O que é Kubernetes?

O Kubernetes é um orquestrador de containers, responsável por gerenciar a implantação, escabilidade e disponibilidade de aplicações empacotadas em containers. Com o Kubernetes, você pode garantir que sua aplicação esteja sempre disponível, mesmo em caso de falha de um container.

Benefícios do Kubernetes

  • Escalabilidade: Ajusta recursos conforme a demanda.
  • Gerenciamento de implantações: Facilita atualizações e reversões.
  • Alta disponibilidade: Minimiza interrupções.
  • Portabilidade: Funciona em qualquer ambiente com suporte ao Kubernetes.
  • Padrão da indústria: Adotado amplamente por empresas de todos os tamanhos.

Componentes do Kubernetes

Control Plane (Plano de Controle)

  • API Server: Interface central para interação com o cluster.
  • Etcd: Armazenamento de chave-valor que guarda o estado do cluster.
  • Controller Manager: Garante que o estado do sistema esteja alinhado ao desejado.
  • Scheduler: Define em quais nós os pods serão implantados.

Workers (Trabalhadores)

  • Kubelet: Garante a saúde dos containers nos nós.
  • Kube Proxy: Gerencia o tráfego de rede para os pods.

Principais conceitos do Kubernetes

  • Pods: A menor unidade no Kubernetes, representa um processo no cluster.
  • ReplicaSets: Garante que um número específico de pods esteja em execução.
  • Deployments: Gerencia implantação e atualização de aplicações.
  • Services: Define um conjunto lógico de pods e fornece acesso uniforme a eles.

Como instalar o Kubernetes e o kubectl no Linux

Instalando o kubectl

  1. Baixe o binário:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
  1. Dê permissão de execução:
chmod +x kubectl
  1. Mova para o local correto:
mv kubectl /usr/local/bin/

Criando seu primeiro cluster com Kind

  1. Instale o Kind:
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind
  1. Instale o Docker, se ainda não estiver instalado.
  2. Crie um cluster:
kind create cluster
  1. Verifique os nós do cluster:
kubectl get nodes
  1. Para deletar o cluster:
kind delete cluster

Criando um cluster com vários nós

  1. Crie uma pasta:
mkdir descomplicando_kubernetes && cd descomplicando_kubernetes
mkdir day-1 && cd day-1
mkdir kind && cd kind
  1. Crie um arquivo de configuração YAML:
vim kind-cluster.yaml

Exemplo de conteúdo:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
  - role: worker
  - role: worker
  1. Crie o cluster:
kind create cluster --config kind-cluster.yaml --name giropops
  1. Verifique os nós:
kubectl get nodes
  1. Para deletar o cluster:
kind delete cluster

Com isso, você já conhece os conceitos fundamentais e deu os primeiros passos no mundo do Kubernetes!


Publicado

em

por

Etiquetas:

Comentários

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *