# O que é Kubernetes?

Kubernetes é uma plataforma de código aberto para implantação, escalonamento e gerenciamento automatizado de aplicações conteinerizadas. Ela organiza contêineres em clusters e garante que os serviços funcionem de maneira confiável e eficiente. Com funcionalidades como balanceamento de carga, autocura e rollouts, o Kubernetes simplifica significativamente a operação de aplicações modernas.

## O que é Kubernetes

Kubernetes (K8s) é um sistema open-source para orquestração de contêineres, originalmente desenvolvido pelo Google e atualmente administrado pela Cloud Native Computing Foundation (CNCF). Ele gerencia aplicações em contêineres em ambientes distribuídos, **automatizando o início (ou reinício), escalonamento, monitoramento e substituição de contêineres conforme necessário**.

A arquitetura, escrita na linguagem de programação Go, está estruturada em um master node e vários worker-nodes, com componentes diferentes, como o scheduler, responsáveis por tarefas administrativas centrais. Por meio de configurações declarativas (por exemplo, em arquivos YAML), define-se estados desejados que o Kubernetes assegura continuamente. A ferramenta tem como objetivo tanto o uso da nuvem quanto a implementação em computadores locais ou em data centers [on-premises](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/o-que-e-on-premise/).

## Como funciona o Kubernetes?

Kubernetes é um sistema de orquestração de contêineres. Isso significa que o software não tem como objetivo criar contêineres, mas sim gerenciá-los. Para isso, o Kubernetes aposta na **automação de processos**. Isso facilita para desenvolvedores testarem, manterem ou publicarem aplicações. A arquitetura do Kubernetes se compõe de uma hierarquia clara:

- **Contêiner**: um contêiner contém aplicações e ambientes de software.
- **Pod**: esta unidade na arquitetura do Kubernetes reúne contêineres que precisam trabalhar juntos para uma aplicação.
- **Node**: um ou mais [pods do Kubernetes](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/kubernetes-pod/) rodam em um node, que pode ser tanto uma máquina virtual quanto uma física.
- **Cluster**: vários nodes são agrupados em um cluster do Kubernetes.

Além disso, a arquitetura do Kubernetes baseia-se no **princípio de master e worker nodes**. Como worker nodes, ou seja, as partes controladas do sistema, são usados os nodes descritos. Eles estão sob a gestão e controle do node master do Kubernetes.

Entre as tarefas de um master está, por exemplo, distribuir pods nos nodes. Por meio da **monitorização constante**, o master pode intervir assim que um node falhar, duplicando-o imediatamente para compensar a falha. O estado atual é sempre comparado com um estado desejado e ajustado conforme necessário. Esses processos ocorrem automaticamente. O master também é o ponto de acesso para administradores, que podem orquestrar os contêineres por meio dele.

### Nodes no Kubernetes

O worker node é um servidor físico ou virtual, onde um ou mais contêineres estão ativos. No node, há um ambiente de execução para os contêineres. Além disso, o chamado **Kubelet** está ativo. Trata-se de um componente que permite a comunicação com o master. O componente também inicia e para contêineres. Com o cAdvisor, o Kubelet possui um serviço que registra o uso de recursos, o que é interessante para análises. Por fim, existe o Kube-proxy, com o qual o sistema realiza [load balancing](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/melhorar-tempos-de-acesso-ao-servidor-com-load-balancers/) e permite conexões de rede via TCP ou outros protocolos.

### Master no Kubernetes

O master também é um servidor. Para garantir o controle e a monitorização dos nodes, o **controller manager** é executado no master. Esse componente, por sua vez, une vários processos em si:

- O **node controller** monitora os nodes e reage quando um deles falha.
- O **replication controller** garante que sempre haja o número desejado de pods em execução simultânea. Em configurações modernas, ele é amplamente substituído por **ReplicaSets**, que geralmente são geridos por meio de deployments.
- O **endpoints controller** é responsável pelo objeto endpoint, que cuida da conexão entre services e pods.
- **Service account e token controller** gerenciam o namespace e criam tokens de acesso ao API.

Além do controller manager, uma base de dados chamada etcd é executada. Nesse banco de dados chave-valor, a configuração do cluster, pelo qual o master é responsável, é armazenada. Com o componente scheduler, o master pode automatizar a distribuição de pods nos nodes. A conexão com o node é feita pelo servidor API integrado no master. Este fornece uma interface REST e troca informações com o cluster por meio de [JSON](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/o-que-e-json/). Por exemplo, dessa maneira, os diferentes controladores também poderiam acessar os nodes.

## Kubernetes e Docker: concorrentes?

A competição [Kubernetes vs. Docker](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/kubernetes-vs-docker/) de quem performa melhor não é uma questão, pois **os dois programas são usados juntos**. [Docker](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/tutorial-docker/) (ou outra plataforma de container como rkt) também é responsável por criar e executar containers no Kubernetes. O Kubernetes acessa esses containers e assume a orquestração ou a automação de processos. Kubernetes sozinho não pode realizar a criação de containers.

Uma competição existe, no máximo, com o **Docker Swarm**. Trata-se de uma ferramenta para orquestração de Docker. Esta ferramenta também trabalha com clusters e oferece funcionalidades semelhantes ao Kubernetes.

## Vantagens do Kubernetes

O Kubernetes impressiona com uma variedade de benefícios que melhoram tanto a escalabilidade quanto a segurança operacional e a eficiência.

**Escalonamento automatizado**: para economizar custos, o Kubernetes pode utilizar recursos de forma perfeita. Em vez de deixar máquinas não necessárias em funcionamento, o Kubernetes pode liberar esses recursos e usá-los para outras tarefas ou simplesmente não utilizá-los, o que pode economizar custos.

**Alta disponibilidade**: por meio de replicação e recuperação automática, o Kubernetes garante que as aplicações continuem a funcionar mesmo em caso de falhas ou falhas de componentes individuais.

**Orquestração eficiente de recursos**: pods e containers são distribuídos de forma inteligente nos nós disponíveis, o que otimiza o uso da capacidade de processamento.

**Implantação e reversão simples**: novas versões de aplicações podem ser distribuídas com esforço mínimo. Se necessário, também é possível reverter rapidamente para versões anteriores.

**Independência de plataforma**: o Kubernetes funciona em servidores locais, na nuvem ou em uma nuvem híbrida; os workloads permanecem portáteis.

**Descoberta de serviço e [load balacing](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/melhorar-tempos-de-acesso-ao-servidor-com-load-balancers/)**: o Kubernetes detecta automaticamente serviços dentro do cluster e distribui o tráfego de forma equilibrada, sem necessidade de balanceadores de carga externos.

**Gerenciamento eficiente com o uso de APIs**: por meio de um API central, todos os componentes do cluster podem ser gerenciados e automatizados, inclusive por ferramentas externas e pipelines CI/CD.

## Para que serve o Kubernetes

Kubernetes é especialmente adequado quando aplicações são operadas em contêineres e uma infraestrutura escalável e altamente disponível é necessária. Além disso, os seguintes casos de uso podem ser identificados:

- **Arquiteturas de microsserviços**: na prática, o K8s é frequentemente usado para operar arquiteturas de microsserviços, nas quais muitos pequenos serviços são desenvolvidos, testados e atualizados de forma independente. As empresas utilizam o Kubernetes para automatizar ambientes de desenvolvimento e produção e responder mais rapidamente a novas demandas.
- **CI/CD**: Kubernetes também é utilizado no campo da integração contínua e implantação contínua, pois permite automatizar implementações e gerenciar versões de forma eficiente.
- **Multi cloud e hybrid cloud**: em estratégias de multi cloud ou hybrid cloud, o Kubernetes é usado para disponibilizar cargas de trabalho de forma independente de plataforma e se mover de maneira flexível entre diferentes provedores de nuvem ou data centers.
- **Big data**: além disso, o Kubernetes também é adequado para projetos de [big data](https://www.ionos.com/pt-br/digitalguide/marketing-online/analise-web/o-que-e-big-data/) e machine learning, nos quais muitos contêineres de curta duração são executados em paralelo.
- **Grandes plataformas**: Kubernetes é indispensável para grandes plataformas com um alto número de usuários, a fim de gerenciar automaticamente picos de tráfego e garantir a resiliência contra falhas.


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/o-que-e-kubernetes/](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/o-que-e-kubernetes/) for AI/LLM consumption.