# O que é Kubernetes?

Quando se fala de DevOps, Platform Engineer, SRE, lembramos de imediato em formas de trabalho, pipelines e ferramentas envolvidas e utilizadas por estes profissionais.

Dentre essas inúmeras ferramentas, temos o Kubernetes.

# Um pouco de história

O CNFC informa que o Kubernetes foi inicialmente criado por engenheiros do Google em 2014, ele se tornou o primeiro projeto hospedado da Cloud Native Computing Foundation em março de 2016. É o segundo maior projeto de código aberto do mundo depois do Linux e é a principal ferramenta de orquestração de contêineres para 71% das empresas da Fortune 100. Olhando para o futuro, a adoção do Kubernetes não mostra sinais de desaceleração – de acordo com o "**The CTO's Guide to Containers and Kubernetes**" do Gartner até 2027, mais de 90% das organizações globais executarão aplicativos em contêineres em produção.

Mas a história não começou em 2014, pois a Google trabalhava com outros orquestradores de containers internamente, estes que foram predecessores ao Kubernetes, eram chamados de BORG e OMEGA. Existe uma publicação da empresa que fala sobre o assunto, denominado: [Borg, Omega and Kubernetes - Lessons learned from three container management systems over a decade](https://static.googleusercontent.com/media/research.google.com/pt-BR//pubs/archive/44843.pdf) (Borg, Omega e Kubernetes - Lições aprendidas a partir de três sistemas de gerenciamento de containers em uma década - Tradução Livre).

# O Kubernetes

Segundo o CNCF o Kubernetes é uma plataforma escalável, extensível e tolerante a falhas para gerenciar aplicativos nativos em contêineres e na nuvem. É a plataforma de orquestração de contêineres mais utilizada que existe.

O Kubernetes que também é conhecido como k8s é uma plataforma de orquestração de containers *opensource* que automatiza grande parte dos processos manuais necessários para implantar, gerenciar e escalar aplicações em containers.

Em resumo, o K8s é uma Plataforma de Gerenciamento de Containers desenvolvido pela Google, atualmente mantido pela comunidade e hospedado pela CNCF (Cloud Native Computing Foundation).

Atualmente vários provedores de nuvem utilizam o Kubernetes como base, como por exemplo: Amazon (EKS), Azure (AKS), Google (GKS). Algumas empresas também desenvolveram seus orquestradores usando como base o Kubernetes, como é o caso do OpenShift da Redhat.

## Vantagens do Kubernetes

Com o Kubernetes, você pode:

* Orquestrar containers em vários hosts (Máquinas).
    
* Fazer melhor uso do hardware para maximizar os recursos necessários na execução de apps reduzindo custos.
    
* Controlar e automatizar atualizações e implantações de aplicações.
    
* Escalar aplicações em containers e os recursos correspondentes com rapidez.
    
* Gerenciar os serviços de maneira assertiva para que a execução das aplicações implantadas ocorra sempre como o esperado.
    
* Permitir a auto recuperação e verificação de integridade das apps ao automatizar o posicionamento, a reinicialização, a replicação e o escalonamento.
    

## Dependências do Kubernetes

O Kubernetes depende de outros projetos para oferecer a orquestração e isto inclui outros projetos *opensource*. Dentre os recursos necessários, podemos citar:

* **Registry**: Torna-se necessário um serviço para armazenar os artefatos de imagem gerados. Exemplo: docker hub, harbor e outros registries privados.
    
* **Rede:** Para gerenciamento de rede podem ser citados projetos como o OVS (OpenvSwitch), Calico e outros.
    
* **Telemetria e Observabilidade**: Projetos como Kibana, Grafana, Prometheus e Elastic.
    

E vários outros...

## Termos usados no Kubernetes

**Control plane:** conjunto de processos que controlam os nós do Kubernetes. Onde todas as atribuições de tarefas se originam.

**Nodes:** realizam as tarefas solicitadas que foram atribuídas pelo control plane. São os "servidores" distribuídos no Cluster.

**Pod:** um grupo de um ou mais containers implantados em um nó.

**Replica Set:** controla quantas cópias idênticas de um pod devem ser executadas no cluster.

**Service:** caminho até o pod.

**Kubelet:** este serviço é executado em nós, lê os manifestos do container e inicia e executa os containers definidos.

**kubectl:** a ferramenta de configuração da linha de comando do Kubernetes.

Claro que existem vários outros e poderia passar horas e horas discorrendo sobre Kubernetes, entretanto este não é o objetivo desse artigo e sim dar um entendimento inicial da ferramenta para gerar uma base.

# Referências

Kubernetes. **Orquestração de contêineres prontos para produção**. Disponível em: **&lt;**[https://kubernetes.io/pt-br/](https://kubernetes.io/pt-br/)\&gt;. Acesso em: &lt;02/10/2023&gt;

**Kubernetes:** Project Journey Report. Disponível em:&lt; [https://www.cncf.io/reports/kubernetes-project-journey-report/](https://www.cncf.io/reports/kubernetes-project-journey-report/)\&gt;. Acesso em: &lt;02/10/2023&gt;

**Borg, Omega and Kubernetes:** Lessons learned from three container management systems over a decade. Disponível em: **&lt;**[https://static.googleusercontent.com/media/research.google.com/pt-BR//pubs/archive/44843.pdf](https://static.googleusercontent.com/media/research.google.com/pt-BR//pubs/archive/44843.pdf)\&gt;. Acesso em: &lt;02/10/2023&gt;
