curso
Explicação da arquitetura do Kubernetes: Um mergulho profundo na escalabilidade nativa da nuvem
O Kubernetes se tornou a tecnologia padrão para gerenciar aplicativos em contêineres em ambientes de nuvem modernos. À medida que as organizações mudam para microsserviços e arquiteturas nativas da nuvem, o Kubernetes fornece tudo o que elas precisam para automatizar a implantação, dimensionar aplicativos e garantir alta disponibilidade.
O Kubernetes é um orquestrador de contêineres de código aberto que simplifica o complexo processo de gerenciamento de contêineres em escala. Ele abstrai as preocupações com a infraestrutura, permitindo que os desenvolvedores se concentrem na criação de aplicativos em vez de se preocuparem com os servidores subjacentes.
Compreender a arquitetura do Kubernetes é essencial para quem deseja implantar e gerenciar aplicativos escaláveis, resilientes e de nível de produção.
Hoje, quero compartilhar uma visão mais profunda sobre a arquitetura do Kubernetes com alunos de nível intermediário já familiarizados com os conceitos básicos do Kubernetes.
O que é o Kubernetes?
O Kubernetes é um sistema distribuído avançado projetado para orquestrar e gerenciar aplicativos em contêineres em escala. Ele permite que as organizações implementem cargas de trabalho em várias máquinas físicas ou virtuais, chamadas de nós, garantindo que os aplicativos permaneçam disponíveis, dimensionáveis e resistentes a falhas.
Um dos principais pontos fortes do Kubernetes é sua capacidade de lidar com cargas de trabalho dinâmicas de forma eficiente. Ao distribuir automaticamente os contêineres entre os nós, o Kubernetes garante que os aplicativos possam ser dimensionados horizontalmente, equilibrando as cargas de trabalho com base nos recursos disponíveis. Se um nó ficar sobrecarregado, o Kubernetes reprograma as cargas de trabalho para nós vizinhos saudáveis, minimizando o tempo de inatividade e mantendo o desempenho.
Se você ainda é um iniciante nessa tecnologia, confira este Curso de introdução ao Kubernetes para você começar.
Uma breve história do Kubernetes
Originalmente, o Google desenvolveu o Kubernetes como um sucessor de código aberto do Borg, seu sistema interno de gerenciamento de contêineres. Lançado em 2014, o Kubernetes tornou-se rapidamente o padrão do setor para orquestração de contêineres, com suporte de um vasto ecossistema de ferramentas e provedores de nuvem. Atualmente, ele é mantido pela Cloud Native Computing Foundation (CNCF) e é amplamente adotado em todos os setores para gerenciar aplicativos nativos da nuvem.
O que é a arquitetura Kubernetes?
O diagrama a seguir representa visualmente a arquitetura do Kubernetes:
Imagem do autor. A arquitetura Kubernetes.
- Os componentes do plano de controle gerenciam o cluster e garantem que o estado desejado seja mantido.
- Os nós de trabalho executam cargas de trabalho, executando contêineres dentro de pods.
- O API Server atua como ponte entre as interações do usuário (via UI ou CLI) e o cluster.
- Os complementos de rede e armazenamento ampliam os recursos do Kubernetes para ambientes de produção.
Com essa base estabelecida, agora podemos explorar as funções detalhadas de cada componente na arquitetura de cluster do Kubernetes.
Componentes principais da arquitetura Kubernetes
O Kubernetes consiste em duas camadas principais: o Plano de Controle e os Componentes de Nó. Vamos explorar cada um deles individualmente:
Plano de controle
O plano de controle do Kubernetes é a camada de gerenciamento central responsável por manter o estado desejado do cluster, agendar cargas de trabalho e lidar com a automação. Ele garante que os aplicativos sejam executados conforme o esperado, monitorando continuamente as condições do cluster e fazendo os ajustes necessários.
Imagem do autor. Componentes do plano de controle.
Servidor de API (kube-apiserver)
O servidor de API é o gateway para o cluster do Kubernetes. Ele processa todas as solicitações de gerenciamento, seja da CLI (kubectl), de painéis da interface do usuário ou de ferramentas de automação. Sem um API Server em execução, o cluster permanece funcional, mas os administradores perdem o controle direto sobre as implementações e configurações.
Gerenciador de controlador (kube-controller-manager)
O Kubernetes opera no padrão de controlador, em que os controladores monitoram o estado do sistema e tomam ações corretivas. O gerente de controladoria supervisiona esses controladores, garantindo funções essenciais como:
- Dimensionamento de cargas de trabalho com base na demanda.
- Gerenciar nós com falha e reprogramar cargas de trabalho.
- Impor os estados desejados (por exemplo, garantir que uma implantação sempre execute o número especificado de réplicas).
Agendador (kube-scheduler)
O Agendador atribui Pods a nós de trabalho, considerando fatores como:
- Disponibilidade de recursos (CPU, memória).
- Regras de afinidade e antiafinidade de nós.
- Distribuição de pods para evitar sobrecarga.
Ele segue um processo de filtragem e pontuação para selecionar o nó ideal para cada novo pod, garantindo a utilização equilibrada dos recursos.
etcd (armazenamento distribuído de chave-valor)
O etcd funciona como a única fonte de verdade do Kubernetes, armazenando todos os dados do cluster, incluindo:
- Definições de configuração.
- Segredos e credenciais.
- Estados atuais e históricos das cargas de trabalho.
Como o comprometimento do etcd concede controle total sobre o cluster, ele deve ser protegido e receber recursos de hardware adequados para manter o desempenho e a confiabilidade.
Gerente de controlador de nuvem
Para implantações do Kubernetes baseadas na nuvem, o Cloud Controller Manager integra o cluster com os serviços do provedor de nuvem, manipulando-os:
- Provisionamento de balanceadores de carga.
- Alocação de volumes de armazenamento persistente.
- Dimensionar a infraestrutura dinamicamente (por exemplo, adicionar máquinas virtuais como nós)
Componentes do nó
Os Worker Nodes são a espinha dorsal computacional de um cluster do Kubernetes, responsáveis por executar cargas de trabalho de aplicativos. Cada nó opera de forma independente e, ao mesmo tempo, mantém comunicação constante com o plano de controle para garantir uma orquestração tranquila.
O Kubernetes programa dinamicamente os pods em nós de trabalho com base na disponibilidade de recursos e nas demandas de carga de trabalho. Os nós podem ser máquinas físicas ou virtuais, e um cluster pronto para produção geralmente consiste em vários nós para permitir o dimensionamento horizontal e a alta disponibilidade. Cada nó de trabalho inclui os seguintes componentes essenciais:
Kubelet: O agente do nó
O Kubelet é o principal agente em nível de nó que gerencia a execução de contêineres. It:
- Comunica-se continuamente com o API Server para receber instruções.
- Garante que os pods sejam executados conforme definido em suas especificações.
- Extrai imagens de contêineres e inicia os contêineres necessários.
- Monitora a integridade dos contêineres e os reinicia, se necessário.
Sem o Kubelet, o nó seria desconectado do cluster, e as cargas de trabalho programadas não seriam gerenciadas adequadamente.
Kube-Proxy: Rede e balanceamento de carga
O Kube-Proxy é responsável por gerenciar a comunicação de rede entre os serviços executados em nós diferentes. It:
- Configura as regras de rede para permitir uma comunicação perfeita entre os pods.
- Facilita a descoberta de serviços e o balanceamento de carga para redes entre pods.
- Garante que o tráfego seja roteado corretamente entre os nós e os clientes externos.
Se o Kube-Proxy falhar, os pods no nó afetado poderão ficar inacessíveis, interrompendo o tráfego de rede dentro do cluster.
Tempo de execução do contêiner: Executando contêineres
O tempo de execução do contêiner é o software que executa aplicativos em contêineres dentro dos pods. O Kubernetes oferece suporte a várias opções de tempo de execução, incluindo:
- containerd (mais comumente usado)
- CRI-O (leve e nativo do Kubernetes)
- Mecanismo Docker (suporte legado via dockershim)
O tempo de execução interage com o sistema operacional para isolar as cargas de trabalho usando tecnologias como cgroups e namespaces, garantindo a utilização eficiente dos recursos.
Como os nós de trabalho interagem com o plano de controle
- Os nós entram no cluster usando um token emitido pelo plano de controle.
- Depois que um nó é registrado, o agendador atribui cargas de trabalho com base nos recursos disponíveis.
- O plano de controle monitora continuamente a integridade do nó e pode reprogramar as cargas de trabalho se um nó ficar insalubre ou sobrecarregado.
Ao combinar o Kubelet, o Kube-Proxy e um tempo de execução de contêiner, os nós de trabalho formam uma camada de execução dimensionável e resiliente que alimenta os aplicativos Kubernetes.
Extensão do Kubernetes com complementos
O Kubernetes foi projetado para ser altamente extensível, permitindo que você personalize e aprimore sua funcionalidade por meio de complementos. Embora o plano de controle e os nós de trabalho formem a infraestrutura principal, os complementos fornecem recursos de rede, armazenamento, monitoramento e automação que tornam o Kubernetes mais avançado e pronto para a produção.
Soluções de rede
A rede do Kubernetes segue uma abordagem baseada em plug-in, exigindo um plug-in compatível com a Container Network Interface (CNI) para permitir a comunicação perfeita entre os pods. Algumas soluções de rede amplamente usadas incluem:
- Calico: Políticas de rede seguras e roteamento de alto desempenho.
- Cilium: rede e segurança baseadas em eBPF.
- Flannel: Rede de sobreposição leve e fácil de configurar.
A maioria das distribuições gerenciadas do Kubernetes vem pré-configurada com uma solução de rede, mas os clusters autogerenciados exigem a instalação manual de um plug-in da CNI.
Soluções de armazenamento
O Kubernetes fornece provisionamento de armazenamento dinâmico por meio de classes de armazenamento, permitindo que as cargas de trabalho interajam com vários back-ends de armazenamento:
- Armazenamento local: Usa o sistema de arquivos de um nó.
- Armazenamento em bloco na nuvem: Integra-se com provedores de nuvem (por exemplo, AWS EBS, Azure Disk, GCP Persistent Disks).
- Armazenamento distribuído: Soluções como Ceph, Longhorn e Rook permitem o armazenamento persistente e replicado entre os nós.
Como o Kubernetes não inclui um registro de contêineres integrado, você deve usar um registro externo (por exemplo, Docker Hub, Harbor ou Amazon ECR) para armazenar e distribuir imagens de contêineres.
Monitoramento e observabilidade
O monitoramento e o registro eficazes são essenciais para gerenciar as cargas de trabalho do Kubernetes. As soluções mais populares incluem:
- Prometheus: Coleta de métricas e alertas.
- Grafana: Painéis de visualização.
- Pilha ELK (Elasticsearch, Logstash, Kibana): Agregação e análise de registros.
Essas ferramentas ajudam a rastrear a integridade do cluster, diagnosticar problemas e otimizar o desempenho.
Controladores de ingresso
Os controladores de entrada gerenciam o acesso externo aos aplicativos dentro do cluster, manipulando o tráfego HTTP/HTTPS e o balanceamento de carga. As opções mais populares incluem:
- NGINX Ingress Controller - amplamente utilizado para gerenciar o tráfego da Web.
- Traefik - roteamento dinâmico com suporte integrado ao Let's Encrypt.
- HAProxy Ingress - balanceamento de carga de alto desempenho.
Funcionalidade personalizada com CRDs
O Kubernetes permite que os usuários estendam sua API por meio de CRDs (Custom Resource Definitions, Definições de Recursos Personalizados), possibilitando a criação de objetos personalizados e fluxos de trabalho de automação.
Os operadores e controladores podem automatizar tarefas complexas, como:
- Provisionamento de bancos de dados quando um objeto PostgresDatabaseConnection personalizado é adicionado.
- Gerenciar políticas de segurança dinamicamente.
- Dimensionamento de aplicativos com base em métricas personalizadas.
Ao aproveitar os CRDs, o Kubernetes pode ser transformado em uma plataforma totalmente personalizável, adaptando-se às necessidades comerciais específicas.
Arquitetura de cluster do Kubernetes
O Kubernetes apresenta várias camadas de abstração para ajudar a definir e gerenciar aplicativos com eficiência. Essas abstrações simplificam a implementação, o dimensionamento e o gerenciamento em ambientes distribuídos.
Nós mestre e de trabalho
Um cluster do Kubernetes consiste em dois tipos principais de nós:
- Nós mestres (plano de controle): Responsável por orquestrar e gerenciar o cluster. Esses nós executam o API Server, o Scheduler, o Controller Manager e o etcd para garantir que as cargas de trabalho sejam implantadas e mantidas conforme o esperado.
- Nós de trabalho (plano de dados): Execute cargas de trabalho de aplicativos executando pods, que contêm contêineres. Cada nó de trabalho é gerenciado pelo Kubelet, interage com o Kube-Proxy para rede e executa um tempo de execução de contêiner, como o Docker ou o containerd.
Juntos, os nós mestre e de trabalho formam uma infraestrutura escalonável e de autocorreção, na qual os aplicativos podem ser executados sem problemas. Se você quiser entender melhor a virtualização e a conteinerização, siga este curso conduzido por especialistas Containerização e virtualização.
Arquitetura de pods
No centro do Kubernetes está o Pod, que é a menor unidade implantável do sistema. Um pod encapsula um ou mais contêineres que compartilham armazenamento, rede e definições de configuração.
- Pods de um único contêiner: A configuração mais comum, em que cada pod contém um contêiner que executa um microsserviço.
- Pods de vários contêineres: Usado quando contêineres fortemente acoplados precisam compartilhar recursos e se comunicar com eficiência.
Os pods são efêmeros, o que significa que podem ser reprogramados ou reiniciados conforme necessário. O Kubernetes gerencia Pods por meio de Deployments, StatefulSets e DaemonSets, garantindo escalabilidade e disponibilidade.
Imagem do autor. Arquitetura do Pod.
Espaço de nomes e segmentação
Os namespaces permitem a segmentação lógica em um cluster do Kubernetes. Eles ajudam:
- Isolar cargas de trabalho para diferentes equipes, projetos ou ambientes (por exemplo, desenvolvimento, staging, produção).
- Aplique o controle de acesso baseado em função (RBAC) para restringir as permissões.
- Gerencie cotas de recursos para evitar o consumo excessivo de recursos.
Ao organizar as cargas de trabalho em namespaces, o Kubernetes permite melhor segurança, gerenciamento de recursos e escalabilidade em um único cluster.
Com essa base estabelecida, podemos agora explorar como a arquitetura do Kubernetes oferece suporte a implantações de microsserviços na próxima seção.
Arquitetura de microsserviços Kubernetes
O Kubernetes é ideal para microsserviços, oferecendo escalabilidade, resiliência e automação para aplicativos distribuídos. Ele permite:
- Dimensionamento automatizado: Ajusta os recursos com base na demanda.
- Autocura: Detecta e substitui contêineres com falha.
- Descoberta de serviços e balanceamento de carga: Comunicação eficiente entre microsserviços.
- Portabilidade: Funciona em ambientes na nuvem e no local.
- Configuração declarativa: Usa YAML para implementações previsíveis.
Uma preocupação comum dos profissionais é se você deve usar o Kubernetes ou o Docker Compose para seus microsserviços. Se esse for o seu caso, recomendo o seguinte guia Docker Compose vs Kubernetes para você entender melhor.
Práticas recomendadas
Abaixo, destacamos algumas das práticas recomendadas que você deve seguir:
- Namespaces para isolamento de carga de trabalho: Organize e isole as cargas de trabalho para melhorar a segurança e o gerenciamento de recursos.
- Kubernetes Services & Ingress para gerenciamento de tráfego: Permitir a comunicação eficiente entre microsserviços e clientes externos.
- Autoscaling e Rolling Updates para um desempenho contínuo: Use o Horizontal Pod Autoscaler e implantações contínuas para manter a disponibilidade.
- ConfigMaps & Secrets para configurações seguras: Gerencie dados confidenciais e configurações de ambiente com segurança.
- Monitoramento e registro de logs com o Prometheus e o Grafana: Obtenha insights e solucione problemas de forma eficaz com ferramentas robustas de observabilidade.
Ao seguir essas práticas, o Kubernetes simplifica a implantação de microsserviços, garantindo flexibilidade e alta disponibilidade.
Casos de uso da arquitetura Kubernetes
O Kubernetes é amplamente adotado em todos os setores por sua capacidade de dimensionar aplicativos, garantir alta disponibilidade e oferecer suporte a ambientes com várias nuvens. Sua arquitetura permite o gerenciamento perfeito da carga de trabalho, tornando-o a escolha preferida para aplicativos modernos nativos da nuvem.
Escalabilidade do aplicativo
O Kubernetes possibilita o dimensionamento horizontal, permitindo que os aplicativos lidem com cargas de trabalho variáveis de forma eficiente:
- O Horizontal Pod Autoscaler (HPA) ajusta o número de pods com base na CPU, na memória ou em métricas personalizadas.
- O Cluster Autoscaler adiciona ou remove dinamicamente nós de trabalho para atender à demanda.
- O balanceamento de carga garante que o tráfego seja distribuído uniformemente entre as réplicas.
Isso torna o Kubernetes ideal para aplicativos com tráfego flutuante, como plataformas de comércio eletrônico, serviços de streaming e aplicativos SaaS.
Alta disponibilidade e tolerância a falhas
O Kubernetes garante a operação contínua por meio de:
- Replicar cargas de trabalho em vários nós para evitar interrupções de serviço.
- Mecanismos de autocorreção que reiniciam automaticamente os contêineres com falha.
- Eleição de líder no plano de controle para manter a estabilidade em caso de falhas.
Esses recursos tornam o Kubernetes adequado para aplicativos de missão crítica que exigem tempo de inatividade quase zero.
Implantações híbridas e em várias nuvens
O Kubernetes abstrai a complexidade da infraestrutura, facilitando a implantação de cargas de trabalho em ambientes locais, híbridos e de várias nuvens:
- Gerenciamento consistente de aplicativos no AWS, no Google Cloud, no Azure e em clusters locais.
- Roteamento de tráfego entre provedores de nuvem para obter latência ideal e eficiência de custo.
- Estratégias de recuperação de desastres com configurações de failover entre nuvens.
Conclusão
O Kubernetes revolucionou a orquestração de contêineres, tornando-se o padrão do setor para implantação, gerenciamento e dimensionamento de aplicativos em ambientes de nuvem modernos. Sua arquitetura permite dimensionamento automatizado, alta disponibilidade e compatibilidade entre nuvens, o que a torna uma ferramenta poderosa para organizações que adotam estratégias de microsserviços e nativas da nuvem.
Ao compreender a arquitetura do Kubernetes, os desenvolvedores e as equipes de TI podem:
- Otimize o desempenho dos aplicativos por meio de agendamento e dimensionamento eficientes.
- Aumente a resiliência do sistema com autocorreção e alta disponibilidade.
- Garanta implementações híbridas e em várias nuvens sem interrupções, evitando a dependência de fornecedores.
Desde o gerenciamento do plano de controle até a execução do nó de trabalho e complementos personalizáveis, o Kubernetes oferece a flexibilidade necessária para executar aplicativosde missão crítica em escala. À medida que o ecossistema de nuvem evolui, o Kubernetes permanece na vanguarda, capacitando as empresas a inovar com confiança.
O Kubernetes é uma ferramenta poderosa para gerenciar aplicativos modernos, mas para dominá-lo é necessário ter experiência prática. Continue seu aprendizado com:
- Curso de introdução ao Kubernetes para você aprender os fundamentos do Kubernetes e implantar e orquestrar contêineres usando Manifestos e instruções do kubectl.
- Docker Compose vs Kubernetes para você escolher a ferramenta certa para suas necessidades.
- Containerização para aprendizado de máquina para aplicar o Kubernetes a fluxos de trabalho de IA/ML.
Josep é cientista de dados e gerente de projetos no Conselho de Turismo da Catalunha, usando dados para melhorar a experiência dos turistas na Catalunha. Sua experiência inclui o gerenciamento de armazenamento e processamento de dados, juntamente com análises avançadas e a comunicação eficaz de insights de dados.
Ele também é um educador dedicado, lecionando no programa de mestrado em Big Data da Universidade de Navarra e contribuindo regularmente com artigos perspicazes sobre ciência de dados para o Medium e o KDNuggets.
Ele é bacharel em Engenharia Física pela Universidade Politécnica da Catalunha e mestre em Sistemas Interativos Inteligentes pela Universidade Pompeu Fabra.
Atualmente, ele está empenhado em tornar as tecnologias relacionadas a dados mais acessíveis a um público mais amplo por meio da publicação ForCode'Sake no Medium.
Principais cursos da DataCamp
programa
Conteinerização e virtualização
curso
Conceitos de virtualização e de contêineres
blog
AWS Certified Cloud Practitioner: um guia completo

Srujana Maddula
27 min
blog
O guia de certificação Kafka para profissionais de dados

Adejumo Ridwan Suleiman
13 min
tutorial
Um guia completo para armazenamento de dados no AWS com o Redshift
tutorial
Hierarquias do Power BI: Um guia abrangente
tutorial
Tutorial de armazenamento do AWS: Uma introdução prática ao S3 e ao EFS
tutorial
Introdução ao k-Means Clustering com o scikit-learn em Python
Kevin Babitz
21 min