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
- 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"
- Dê permissão de execução:
chmod +x kubectl
- Mova para o local correto:
mv kubectl /usr/local/bin/
Criando seu primeiro cluster com Kind
- 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
- Instale o Docker, se ainda não estiver instalado.
- Crie um cluster:
kind create cluster
- Verifique os nós do cluster:
kubectl get nodes
- Para deletar o cluster:
kind delete cluster
Criando um cluster com vários nós
- Crie uma pasta:
mkdir descomplicando_kubernetes && cd descomplicando_kubernetes
mkdir day-1 && cd day-1
mkdir kind && cd kind
- 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
- Crie o cluster:
kind create cluster --config kind-cluster.yaml --name giropops
- Verifique os nós:
kubectl get nodes
- Para deletar o cluster:
kind delete cluster
Com isso, você já conhece os conceitos fundamentais e deu os primeiros passos no mundo do Kubernetes!
Deixe um comentário