O que é Kubernetes?

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 (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: <https://kubernetes.io/pt-br/\>. Acesso em: <02/10/2023>

Kubernetes: Project Journey Report. Disponível em:< https://www.cncf.io/reports/kubernetes-project-journey-report/\>. Acesso em: <02/10/2023>

Borg, Omega and Kubernetes: Lessons learned from three container management systems over a decade. Disponível em: <https://static.googleusercontent.com/media/research.google.com/pt-BR//pubs/archive/44843.pdf\>. Acesso em: <02/10/2023>

Did you find this article valuable?

Support Nilson Vieira by becoming a sponsor. Any amount is appreciated!