DEV Community

Cover image for Kubernetes: resumo de conceitos básicos
Natália Oliveira
Natália Oliveira

Posted on

Kubernetes: resumo de conceitos básicos

Se você está procurando um conteúdo enxuto e direto ao ponto sobre o básico de Kubernetes, este é o lugar. Todos os conceitos apresentados aqui foram tirados diretamente da documentação do Kubernetes. Irei responder as seguintes perguntas:

O que é Kubernetes?

O Kubernetes é uma plataforma open source portável, extensível, para gerenciar workloads e serviços containerizados, que facilita configuração declarativa e automação. Um workload é uma aplicação rodando no Kubernetes, e um serviço containerizado é quando usamos, por exemplo, o Docker para criar containers.

Para que serve o Kubernetes?

Além de gerenciar workloads e serviços containerizados, o Kubernetes provê:

  • Service discovery e load balancing: ele expõe um container usando o nome DNS ou IP e, se o tráfego estiver alto, ele pode balancear e distribuir pela network. Service discovery é o processo de detectar automaticamente devices e serviços numa rede de computadores
  • Orquestração de armazenamento: ele te permite montar um sistema de armazenamento a sua escolha, como local storage e cloud providers públicos
  • Rollouts e rollbacks automáticos: você pode descrever o estado desejado para o container deployado e o Kubernetes consegue controlar o estado de acordo com o que você descreveu
  • Bin packing automático: você diz o quanto de CPU e RAM cada container precisa e o Kubernetes lida com os recursos descritos da melhor forma
  • Self-healing: o Kubernetes reinicia containers que falharam, substitui containers, mata containers que não respondem ao health-check definido e não expõe o container para clientes até que eles estejam prontos
  • Gerenciamento de configuração e secrets: ele também te deixa guardar e gerenciar informações sensíveis como senhas, OAuth tokens, SSH keys, etc

Quais os componentes básicos do Kubernetes?

Os componentes básicos do Kubernetes são:

Quando fazemos deploy do Kubernetes nós temos um cluster. Para ter um cluster Kubernetes funcionando precisamos desses componentes:

kubernetes components

O que é um cluster?

Um cluster é um conjunto de worker machines, que são chamadas de nodes. Cada cluster tem pelo menos um worker node.

O que são nodes?

Nodes rodam aplicações containerizadas no Kubernetes, e as worker nodes são hosts para pods. Os nodes têm os seguintes componentes:

  • kubelet: um agente que roda em cada node do cluster, verificando se containers estão rodando num pod
  • kube-proxy: é uma network proxy, ou seja, uma aplicação que atua como intermediário entre um cliente e um servidor, que roda em cada node do cluster, implementando uma parte do conceito de service do Kubernetes. O kube-proxy mantém regras de network nos nodes, e essas regras permitem comunicações de rede para seus pods de sessions dentro ou fora do cluster
  • Container runtime: é o software que é responsável por rodar os containers, como o containerd e o CRI-O

O que são pods?

Um pod é um conjunto de containers rodando no cluster Kubernetes.

O que é o control plane?

O control plane gerencia os worker nodes e os pods no cluster. Em ambientes de produção ele geralmente roda em vários computadores e um cluster geralmente roda vários nodes. Os componentes do control plane tomam decisões globais sobre o cluster, detectando e respondendo a eventos do cluster como, por exemplo, startar um pod.

O control plane é composto de:

  • kube-apiserver: expõe a API do Kubernetes, como se fosse o frontend para o Kubernetes control plane
  • etcd: armazenamento de chave/valor para todos os dados do cluster
  • kube-scheduler: é o componente que verifica novos pods criados que estão sem node definido, selecionando um node onde eles possam rodar
  • kube-controller-manager: componente que roda processos do controller. Cada controller, como o node controller, job controller e o ServiceAccount controller, é um processo separado, entretanto, são todos compilados em um único binário e rodados como um único processo
  • cloud-controller-manager: componente que tem lógica de controle específica do provedor de cloud, permitindo que você link seu cluster com a API do provedor

O que é kubectl?

É a ferramenta de linha de comando do Kubernetes para se comunicar com o control plane do cluster, usando a API do Kubernetes. Sintaxe do kubectl:

kubectl [command] [TYPE] [NAME] [flags]
Enter fullscreen mode Exit fullscreen mode

Exemplo de comando para listar todos os pods dentro de um namespace (um namespace é uma forma de isolar um grupo de recursos):

kubectl get pods
Enter fullscreen mode Exit fullscreen mode

Fontes:
Documentação do Kubernetes
Service discovery na Wikipedia
Proxy server na Wikipedia


Esse texto não tem intenção de esgotar o tema. Acrescente nos comentários, e também aponte erros quando os identificar.

Top comments (0)