O que é o Kubernetes?


O Kubernetes é o orquestrador mais popular para a implementação e escalabilidade de sistemas em containers. Pode usar o Kubernetes para criar e distribuir de forma fiável aplicações que utilizam soluções cloud. Neste artigo, vai descobrir o que o Kubernetes pode fazer e como começar a executar as suas próprias soluções em containers.

kubernetes heroe

O que é o Kubernetes?

O Kubernetes é um sistema open-source que automatiza as tarefas de implementação de containers. Foi desenvolvido pela Google, mas passou a ser mantido no quadro da Cloud Native Computing Foundation (CNCF).

O Kubernetes impôs-se porque resolve numerosos problemas ligados à utilização de containers em produção. Facilita o lançamento de réplicas ilimitadas de containers, a respetiva distribuição por vários hosts físicos e a implementação de uma rede que permite aceder aos seus serviços.

A maioria dos programadores começa por usar containers com o Docker. Embora seja uma ferramenta completa, trata-se de uma ferramenta de nível relativamente baixo, baseada em comandos CLI que interagem com um único container de cada vez.

O Kubernetes fornece abstrações de nível muito mais elevado que permitem definir as aplicações e a respetiva infraestrutura por meio de modelos declarativos nos quais pode colaborar.

Como funciona o Kubernetes?

O Kubernetes tem a reputação de ser complexo, pois tem vários elementos móveis. Compreender as bases da forma como eles se interligam irá ajudá-lo a compreender o funcionamento do Kubernetes.

Um ambiente Kubernetes é chamado cluster. Inclui um ou mais nós. Um nó é simplesmente uma máquina que executará os seus containers. Pode tratar-se de um hardware físico ou de uma MV (máquina virtual, ou Virtual Machine em inglês).

Além dos nós, o cluster dispõe igualmente de um plano de controlo. O plano de controlo coordena todas as operações do cluster. Permite planificar novos containers nos nós disponíveis e fornecer o serviço Kubernetes com o qual interage.

É possível executar um cluster com várias instâncias do plano de controlo para criar uma configuração altamente disponível com mais resiliência.

Estes são os principais componentes do Kubernetes:

Kube-apiserver:

Esta é a parte do plano de controlo que executa o servidor API. É a única forma de interagir com um cluster Kubernetes em execução. Pode enviar comandos ao servidor API através da CLI Kubectl ou através de um cliente HTTP.

Kube-controller-manager:

O gestor de controladores inicia e executa os controladores integrados do Kubernetes. Um controlador é, essencialmente, um loop de eventos que aplica ações após alterações no seu cluster. Criam, escalam e eliminam objetos em resposta a eventos, como um pedido de API ou um aumento da carga.

Kube-scheduler:

O planificador atribui novos pods (containers) nos nós do cluster. Determina que nós podem cumprir os requisitos do pod e escolhe a localização ideal para maximizar o desempenho e a fiabilidade.

Kubelet:

O Kubelet é um processo de trabalho que é executado em cada um dos nós. Mantém a comunicação com o plano de controlo do Kubernetes para receber as suas instruções. O Kubelet é responsável pela extração das imagens de containers e pela inicialização de containers em resposta aos pedidos de planeamento.

Kube-proxy:

O proxy é outro componente presente nos nós individuais. Configura o sistema de rede do host para que o tráfego atinja os serviços do cluster.

O Kubectl é, em geral, o último elemento de um ambiente Kubernetes funcional. Necessitará desta CLI para interagir com o cluster e os respetivos objetos. Depois de configurar o seu cluster, também pode instalar o painel de controlo oficial ou uma solução de terceiros de modo a controlar o Kubernetes a partir de uma interface gráfica.

Vantagens do Kubernetes

O Kubernetes e a conteinerização oferecem muitas vantagens às empresas e aos fornecedores que procuram criar e manter aplicações escaláveis, resilientes e portáteis. Aqui ficam algumas das principais vantagens do Kubernetes:

Conteinerização:

O Kubernetes usa a tecnologia de conteinerização, como o Docker, para encapsular aplicações e as respetivas dependências em unidades leves e isoladas, chamadas containers. Os containers oferecem várias vantagens, nomeadamente uma melhor utilização dos recursos, um acondicionamento fácil das aplicações e um comportamento coerente em diferentes ambientes.

Escalabilidade:

O Kubernetes permite uma escalabilidade sem esforço das aplicações. Permite-lhe fazer evoluir as suas aplicações de microsserviços horizontalmente ao adicionar ou eliminar instâncias, chamadas pods, em função da carga de trabalho. Isto ajuda a garantir que a sua aplicação pode gerir um tráfego maior ou adaptar-se a necessidades de recursos mais exigentes. Isso melhora o desempenho e a capacidade de resposta, e é especialmente necessário durante a migração da carga de trabalho para DevOps.

Alta disponibilidade:

O Kubernetes suporta uma alta disponibilidade ao fornecer mecanismos automatizados de redirecionamento e de equilíbrio da carga. Pode reiniciar automaticamente os containers em falha, substituir as instâncias com problemas e repartir o tráfego entre as instâncias sãs. Isto garante que a sua aplicação permanece disponível mesmo em caso de falha da infraestrutura ou dos containers. Assim, reduz-se o tempo de interrupção e melhora-se a fiabilidade.

Eficiência de recursos:

O Kubernetes otimiza a alocação e a utilização dos recursos graças às suas capacidades de planificação avançadas. De forma inteligente, distribui os containers pelos nós em função da disponibilidade dos recursos e das exigências da carga de trabalho. Isto ajuda a maximizar a utilização dos recursos informáticos, a minimizar o desperdício e a reduzir os custos.

Autorreparação:

O Kubernetes tem capacidades de autorreparação, o que significa que deteta e trata automaticamente problemas no ambiente da aplicação. Se um container ou um nó falhar, o Kubernetes pode replanear os containers em nós saudáveis. Também pode substituir as instâncias com falha e até executar atualizações automáticas sem interromper a disponibilidade geral da aplicação.

Portabilidade:

O Kubernetes oferece portabilidade, o que permite uma transferência facilitada de aplicações entre diferentes ambientes, como datacenters on-premises, clouds públicas ou configurações híbridas. A abordagem centrada nos containers garante que as aplicações e as suas dependências ficam agrupadas. Isto reduz o risco de problemas de compatibilidade e permite uma implementação transparente em várias plataformas de infraestrutura.

Facilitação do DevOps:

O Kubernetes promove a colaboração entre as equipas de desenvolvimento e exploração ao fornecer uma plataforma unificada para a implementação e gestão das aplicações. Permite que os programadores definam configurações de aplicações sob forma de código usando manifestos Kubernetes, que possibilitam implementações repetíveis e controladas por versão.

As equipas de exploração podem recorrer ao Kubernetes para automatizar os fluxos de trabalho de implementação, monitorizar a saúde das aplicações e implementar pipelines de integração e entrega contínuas (CI/CD).

Tipos de aplicações que funcionam com o Kubernetes

O Kubernetes pode ser utilizado para implementar uma vasta gama de aplicações, incluindo aplicações web, microsserviços, bases de dados, etc. Exploremos os diferentes tipos de aplicações que podem ser implementadas no Kubernetes.

Aplicações web

As aplicações web são o tipo mais comum de aplicações implementadas no Kubernetes. São geralmente compostas por vários containers, entre os quais um servidor web, um servidor de aplicação e uma base de dados. O Kubernetes pode gerir facilmente estes containers e garantir o seu bom funcionamento. O Kubernetes permite-lhe também escalar facilmente as suas aplicações web, tanto horizontal como verticalmente, em função da procura.


As aplicações web são igualmente muito adequadas devido à sua capacidade de implementação de forma rápida e contínua. Embora possam ser alojadas no Kubernetes aplicações com longos estados de execução, as aplicações web costumam ter um ciclo de vida muito curto para o tratamento dos seus pedidos. Isto significa que podem passar rapidamente para uma nova versão sem afetar os utilizadores finais.

Microsserviços

O Kubernetes é uma excelente plataforma para implementar microsserviços, pois permite implementar cada microsserviço como um container distinto. Esse facto facilita a escalabilidade independente de microsserviços individuais e permite que se atualizem e implementem novas versões de um microsserviço sem afetar o resto da aplicação.

Bases de dados

As bases de dados são componentes essenciais de muitas aplicações, e o Kubernetes pode também ser usado para as implementar e gerir. Há diferentes tipos de bases de dados passíveis de ser implementadas no Kubernetes, nomeadamente SQL, NoSQL e as bases de dados chave-valor (também conhecidas como KVS ou Key-Value Store).


O Kubernetes oferece funcionalidades como conjuntos com estado e volumes persistentes que permitem implementar bases de dados e garantir a persistência dos seus dados, mesmo que os containers sejam reiniciados ou movidos para outro nó.


Quando está na cloud, pode usar o EC2 (ou uma solução equivalente) para criar um armazenamento persistente e rápido diretamente nos seus containers. A deslocação deste armazenamento para um novo container também é bastante trivial. As suas soluções locais são muito mais variadas e complexas de gerir. Tenha cuidado neste domínio, pois os problemas de armazenamento podem rapidamente pôr termo às suas aventuras com as bases de dados Kubernetes.

Big Data

O Kubernetes pode também ser utilizado para implementar aplicações Big Data como o Apache Spark e o Hadoop. Estas aplicações requerem um grande número de recursos para funcionar, e o Kubernetes pode gerir tais recursos de forma eficaz. O Kubernetes pode também ser usado para orquestrar a implementação de diferentes componentes Big Data, como a ingestão, o processamento e o armazenamento de dados.

Aprendizagem automática

O Kubernetes oferece funcionalidades como cotas de recursos e limites de recursos, que podem ser usados para garantir o bom funcionamento dos modelos de aprendizagem automática.

IoT

A Internet das Coisas (IoT) é um domínio em plena expansão que consiste em ligar dispositivos físicos à Internet. O Kubernetes pode ser utilizado para implementar e gerir aplicações IoT, incluindo aplicações de edge computing.

Soluções de containers

As soluções de containers adequam-se ao Kubernetes, pois ele oferece uma orquestração potente e flexível para gerir implementações de containers em grande escala. Com o Kubernetes, pode implementar e gerir facilmente soluções de containers em ambientes cloud ou locais.

OVHcloud e Kubernetes

Serviço Managed Kubernetes® gratuito para orquestrar os seus containers

Kubernetes® é o orquestrador de containers de referência do setor. Utilizado por empresas de todos os tamanhos, facilita a implementação, a resiliência e a escalabilidade das suas aplicações, mesmo em infraestruturas híbridas ou multicloud.

O serviço Managed Kubernetes® baseia-se nas instâncias Public Cloud da OVHcloud. Com os repartidores de carga da OVHcloud e os discos adicionais integrados, poderá alojar qualquer tipo de carga de trabalho com uma reversibilidade total.

Orchestration

Perguntas frequentes

Diferenças entre o Kubernetes e o Docker?

O Docker condiciona e implementa aplicações em containers leves, enquanto o Kubernetes automatiza a implementação e a gestão destes containers à escala. Juntos, formam um potente ecossistema para o desenvolvimento e a gestão de aplicações modernas.

O Kubernetes é uma ferramenta DevOps?

Ao ser bem utilizado nas práticas DevOps, o Kubernetes automatiza a implementação, a gestão e a escalabilidade das aplicações, facilitando a colaboração entre as equipas de desenvolvimento e de exploração para implementações ágeis e evolutivas.