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>