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?
- Para que serve o Kubernetes?
- Quais os componentes básicos do Kubernetes?
- O que é um cluster?
- O que são nodes?
- O que são pods?
- O que é o control plane?
- O que é kubectl?
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:
- Cluster
- Node
- Pod
- Control plane
- Complementos: DNS, dashboard do Kubernetes, cluster-level logging, entre outros
Quando fazemos deploy do Kubernetes nós temos um cluster. Para ter um cluster Kubernetes funcionando precisamos desses componentes:
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]
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
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)