This is the Trace Id: 2cfcadbeaad646166c8bcd5699354aac
Pular para o conteúdo principal
Azure
plano de fundo gradiente

O que é o Kubernetes?

Saiba como executar contêineres automatizando a implantação, o gerenciamento e o dimensionamento.

Definição de Kubernetes

O Kubernetes é um software de código aberto que automatiza a implantação, o gerenciamento e o dimensionamento de aplicativos em contêineres. Ele orquestra clusters de máquinas virtuais, agenda contêineres e oferece autocorreção, balanceamento de carga e portabilidade entre ambientes.

Principais conclusões

  • O Kubernetes é uma plataforma que ajuda você a executar, controlar e expandir cargas de trabalho em contêineres em vários servidores em um cluster.
  • Ele agrupa contêineres em Pods, com um painel de controle fazendo o agendamento e controladores mantendo o estado desejado.
  • Ele lida com descoberta de serviço, balanceamento de carga, dimensionamento automático e autocorreção (reinicializações, substituições e reagendamento).
  • As equipes usam isso para ter versões portáteis entre ambientes e para acompanhar métricas de integridade e estabilidade.

Explicação sobre o Kubernetes

Kubernetes é um software de código aberto que profissionais de DevOps usam para implantar, gerenciar e escalonar contêineres em um cluster. O Docker — outra tecnologia de código aberto — é o formato padrão de arquivo de contêiner usado com frequência em conjunto com o Kubernetes.

Contêineres

Os contêineres empacotam um aplicativo com suas dependências e configuração para que ele possa ser executado consistentemente em ambientes diferentes. À medida que um aplicativo evolui, você pode executar muitos contêineres em muitos servidores — e coordenar tudo isso manualmente fica complicado. O Kubernetes resolve essa complexidade com uma API de código aberto e um sistema de controle que decide o que deve ser executado e onde, mantendo tudo em execução.

O que o Kubernetes faz por você

Agendamento e alocação de recursos

O Kubernetes orquestra clusters de máquinas virtuais e agenda contêineres para serem executados com base nos recursos de computação disponíveis e nas necessidades de recursos de cada contêiner.

Descoberta de serviço e balanceamento de carga

O Kubernetes gerencia a descoberta de serviços e o balanceamento de carga para que o tráfego possa ser roteado para os Pods certos, mesmo quando os Pods mudam ao longo do tempo.

Escala para atender à demanda

O Kubernetes dimensiona cargas de trabalho com base no uso de computação e no estado desejado que você define.

Autorrecuperação quando algo falha

O Kubernetes verifica a integridade dos recursos e pode reiniciar ou replicar contêineres quando surgem problemas. Ele reinicia ou substitui contêineres com falha e retém o tráfego até que as cargas de trabalho estejam prontas.

Dá suporte a alterações controladas

O Kubernetes oferece suporte a padrões de implantação para aplicativos em execução, incluindo lançamentos e reversões automatizados com base no estado desejado que você descreve.

Gerenciamento de configuração e segredos

O Kubernetes oferece gerenciamento de segredos e de configuração para informações confidenciais, como senhas ou tokens.

Orquestração de armazenamento

O Kubernetes pode montar os sistemas de armazenamento que você escolher (por exemplo, armazenamento local ou opções de nuvem pública), com base no modelo de orquestração de armazenamento do Kubernetes.

Um glossário rápido de objetos

O Kubernetes é baseado em objetos de API — recursos que você declara e gerencia. Veja algumas a seguir:

  • Pod: a unidade básica que executa um ou mais contêineres.

  • Serviço: uma maneira estável de expor um aplicativo e rotear o tráfego para pods alterados.

  • Implantação: uma maneira de descrever um estado de aplicativo desejado e atualizá-lo ao longo do tempo (geralmente vinculado a rollouts e reversões).

  • : um computador no cluster em que os pods são executados.

  • Painel de controle: componentes que gerenciam o estado do cluster e decisões de agendamento.

Como tudo se encaixa

  1. Você declara o estado desejado do seu aplicativo (o que deve ser executado, quantas cópias e quais são as necessidades de recursos).

  2. O painel de controle registra e age sobre essa solicitação por meio da API do Kubernetes e do repositório de apoio.

  3. O agendador coloca os pods em nós com recursos suficientes.

  4. Os componentes do nó executam a carga de trabalho.

  5. Os controladores reconciliam continuamente para que o estado real corresponda ao estado desejado — dimensionando, substituindo e atualizando cargas de trabalho conforme necessário.

Arquitetura do Kubernetes

Os principais blocos de construção

Cluster: painel de controle mais nós de trabalho

Um cluster do Kubernetes normalmente é descrito em duas partes: um painel de controle que gerencia o cluster e nós de trabalho que executam suas cargas de trabalho.

Componentes do plano de controle

Esses componentes gerenciam o estado geral do cluster:

  • kube-apiserver: expõe a API HTTP do Kubernetes (a porta de entrada para as solicitações).

  • etcd: um repositório de chave-valor consistente e altamente disponível para dados de cluster.

  • kube-scheduler: localiza pods que precisam de posicionamento e os atribui a um nó.

  • kube-controller-manager: executa controladores que reconciliam o estado real com o estado desejado.

  • cloud-controller-manager (opcional): conecta o Kubernetes à lógica de controle específica do provedor de nuvem.

Componentes do nó

Cada nó de trabalho executa software que mantém os pods e as regras de rede:

  • kubelet: garante que os pods estejam em execução no nó, incluindo seus contêineres.

  • kube-proxy (opcional): mantém regras de rede para dar suporte a serviços.

  • runtime do contêiner: executa contêineres no nó.

Pods: a unidade básica de trabalho

O Kubernetes não agenda contêineres individuais diretamente, em termos abstratos. Ele agrupa um ou mais contêineres em um pod, que se torna a unidade operacional básica. Os pods então aumentam ou diminuem até atingir o estado desejado que você define.

Na prática, isso significa:

  1. Você descreve o app que quer executar.

  2. O Kubernetes agenda pods em máquinas com computação disponível.

  3. Os controladores mantêm o cluster avançando em direção ao estado que você solicitou.

Rede do serviço

Os Pods podem surgir e desaparecer, então o Kubernetes oferece primitivas — blocos de construção básicos que você combina para descrever e executar aplicativos em um cluster — que fornecem maneiras estáveis de alcançar cargas de trabalho.

Noções básicas de rede do pod

Cada pod recebe o seu próprio endereço IP em todo o cluster, e os pods podem se comunicar entre nós sem tradução de endereços de rede (NAT) no modelo de rede do Kubernetes.

Serviços

A API de Serviço fornece um endereço IP ou nome de host estável para um conjunto de Pods de back-end, mesmo quando Pods individuais mudam ao longo do tempo.

EndpointSlice

O Kubernetes mantém objetos de fatia de ponto de extremidade para acompanhar quais pods estão dando suporte a um serviço no momento.

API de Entrada/Gateway

Para expor serviços para clientes fora do cluster, o Kubernetes dá suporte à API de Gateway (e ao ingress como antecessor).

Serviços do LoadBalancer

Alguns ambientes podem expor um serviço externamente usando o tipo de serviço LoadBalancer.

Complementos que você pode executar em um cluster

Os clusters do Kubernetes muitas vezes incluem complementos que ampliam a funcionalidade além dos componentes principais. Por exemplo:

  • DNS para resolução de nomes em todo o cluster.

  • Interface do usuário da Web (painel) para gerenciamento de cluster.

  • Monitoramento de recursos de contêiner para coleta de métricas.

  • Registro em log no nível do cluster para coletar logs centralmente.

Como o Kubernetes funciona?

O Kubernetes executa aplicativos em contêineres em um cluster de máquinas e os mantém no estado que você descreve. Ele faz isso colocando o trabalho nas máquinas certas, roteando o tráfego para os lugares certos e observando falhas e mudanças.

O fluxo básico

1. Você descreve o que quer executar

A maioria das cargas de trabalho do Kubernetes começa como um “estado desejado” declarado (o que deve estar em execução, quantas cópias e como elas devem ser expostas). O Kubernetes foi projetado com configuração declarativa e automação.

2. O Kubernetes decide onde isso deve ser executado

O Kubernetes agenda contêineres nas máquinas do cluster com base nos recursos de computação disponíveis e no que cada contêiner precisa. Os contêineres são executados dentro de Pods, que é a unidade que o Kubernetes coloca em uma máquina.

3. O Kubernetes fica verificando a realidade em relação ao seu estado desejado

Os controllers monitoram o cluster e trabalham para aproximar o estado atual do estado desejado, usando o servidor da API para fazer mudanças.

Agendamento de contêineres e gerenciamento diário

Agendamento é a pergunta: “onde isso deve ser executado?” decisão.

1. Os Pods são agendados, não os contêineres individuais

O Kubernetes agrupa contêineres em pods e depois coloca esses pods em máquinas.

2. O agendador atribui os Pods a um nó adequado

O kube-scheduler procura pods que ainda não estão atribuídos e seleciona um nó para eles.

3. Os agentes do nó mantêm os Pods em execução

Em cada nó, o kubelet garante que os Pods estejam em execução (incluindo seus contêineres).

Balanceamento de carga e descoberta de serviços

Contêineres e pods podem ser criados, movidos ou substituídos, então os aplicativos precisam de maneiras estáveis de se encontrar.

A descoberta de serviços e o balanceamento de carga são comportamentos integrados

O Kubernetes gerencia a descoberta de serviços e usa balanceamento de carga para que o tráfego possa ser roteado mesmo quando os Pods mudam ao longo do tempo.

Os Serviços fornecem um endereço estável para um conjunto de pods que muda

A API de Serviço fornece um endereço IP ou nome de host estável para um serviço com suporte de um ou mais Pods, e o Kubernetes acompanha os Pods de back-end por meio de objetos EndpointSlice.

As rotas de tráfego são atualizadas conforme os Pods mudam

Quando os Pods por trás de um serviço mudam, o roteamento do serviço se ajusta para que o tráfego continue chegando ao back-end atual.

Dimensionamento de aplicativos (e por que o “estado desejado” importa)

O Kubernetes pode dimensionar cargas de trabalho para o estado que você definiu, inclusive com base no uso de computação.

Veja algumas ideias comuns de escalonamento:

  • Mais réplicas (mais pods) para lidar com uma demanda mais alta.

  • Menos réplicas quando a demanda cai.

  • Controle de recursos para que as decisões de posicionamento reflitam as necessidades de CPU e memória.

Isso se conecta ao modelo de “estado desejado”: você define a meta, e os controladores continuam trabalhando para chegar lá.

Autocorreção: o que acontece quando algo falha

O Kubernetes inclui comportamentos de autorrecuperação que ajudam a manter a integridade e a disponibilidade da carga de trabalho. Isso inclui:

  • Reiniciando contêineres com falha (reinicializações no nível do contêiner).

  • Substituindo Pods com falha para manter o número solicitado de réplicas (substituição de réplica).

  • Reagendamento de cargas de trabalho quando os nós ficam indisponíveis.

  • Removendo pods com falha dos pontos de extremidade de serviço para que o tráfego vá apenas para pods íntegros (balanceamento de carga para serviços).

A autorrecuperação verifica a integridade dos contêineres e os reinicia ou replica quando surgem problemas.

A função dos KPIs do Kubernetes

Indicadores-chave de desempenho (KPIs, ou métricas) são usados para entender a saúde do cluster e o comportamento da carga de trabalho.

De onde vêm os KPIs

  • Os componentes do sistema do Kubernetes emitem métricas (no formato do Prometheus) que são úteis para painéis e alertas.

  • As métricas geralmente ficam disponíveis em um endpoint HTTP /metrics do componente, incluindo componentes como kube-apiserver, kube-scheduler, kubelet, kube-proxy e kube-controller-manager.

Exemplos do que os KPIs ajudam você a identificar

  • Sinais de integridade do cluster (padrões de erro e métricas no nível do componente)

  • Estabilidade da carga de trabalho (por exemplo, reinicializações ou substituições frequentes)

  • Pressão de capacidade (alocação de recursos versus demanda, vinculada a decisões de dimensionamento)

Por que isso importa nas operações do dia a dia

O monitoramento dá às equipes uma visão mais completa dos recursos do cluster, da API do Kubernetes, dos contêineres e dos logs, o que encurta o loop de feedback entre problemas e correções.

Benefícios e casos de uso

O Kubernetes costuma ser escolhido quando as equipes precisam de uma forma consistente de executar muitos contêineres em muitas máquinas, enquanto a plataforma cuida do roteamento de tráfego, do dimensionamento e da recuperação.

Escalabilidade

O Kubernetes pode dimensionar cargas de trabalho, ou seja, aumentá-las ou reduzi-las conforme a demanda muda, em direção a um estado alvo, e pode ser escalonado com base no uso de computação.

Casos de uso comuns

  • Aplicativos Web com tráfego variável (campanhas, picos sazonais): ajuste réplicas conforme a carga muda.

  • Processamento controlado por eventos ou em lote: adicione capacidade para intermitências e, em seguida, reduza verticalmente.

  • Microsserviços: dimensione serviços específicos sem dimensionar todo o aplicativo.

Eficiência de recursos

O Kubernetes dá suporte ao empacotamento automático, que consiste em colocar contêineres em nós com base nas necessidades de CPU e memória para aproveitar melhor os recursos disponíveis. Ele também acompanha a alocação de recursos enquanto gerencia cargas de trabalho.

Casos de uso comuns

  • Clusters compartilhados para várias equipes: reduza a capacidade perdida colocando cargas de trabalho onde os recursos estão disponíveis.

  • Clusters de carga de trabalho mistos (serviços mais trabalhos): mantenha os nós ocupados sem posicionamento manual.

Descoberta de serviço e balanceamento de carga

O Kubernetes pode expor cargas de trabalho usando DNS ou um endereço IP e distribuir o tráfego de rede para manter as implantações estáveis. Ele também gerencia a descoberta de serviços e inclui balanceamento de carga conforme os workloads mudam.

Casos de uso comuns

  • Comunicação de microsserviços: os serviços encontram-se entre si por meio de nomes estáveis enquanto os pods são alterados.

  • APIs internas por trás de um ponto de extremidade estável: roteie o tráfego somente para back-ends atuais.

Autorrecuperação

O Kubernetes foi projetado para substituir contêineres com falha, reagendar workloads quando os nós ficam indisponíveis e manter o estado desejado. Os exemplos incluem reinicialização de contêineres, substituição de réplicas e remoção de Pods com problemas dos pontos de extremidade do serviço, para que o tráfego vá só para os pods saudáveis.

Casos de uso comuns

  • Serviços sempre ativos: reinicie ou substitua instâncias com falha sem intervenção manual.

  • Clusters com troca frequente de nós: reagendar cargas de trabalho quando um nó cai.

  • Serviços por trás de um serviço: pare de rotear o tráfego para pods não íntegros.

Versões mais seguras

O Kubernetes dá suporte a implantações e reversões automatizadas. Você descreve o estado desejado, e o Kubernetes leva o estado real até ele em um ritmo controlado.

Casos de uso comuns

  • Atualizações frequentes do aplicativo: reverta as alterações gradualmente, se necessário.

  • Equipes que fornecem vários serviços: mantenha a mecânica de lançamento consistente entre aplicativos.

Portabilidade

Os aplicativos conteinerizados são separados da infraestrutura, e o Kubernetes ajuda a movê-los de computadores locais para produção entre ambientes locais, sem servidor, de nuvem híbrida e multinuvem, mantendo a consistência entre ambientes.

Casos de uso comuns

  • Paridade de desenvolvimento/teste/produção: mantenha o mesmo modelo de empacotamento e agendamento entre ambientes.

  • Implantações híbridas: execute partes de um sistema no local e partes na nuvem com a mesma abordagem de orquestração.

Introdução ao Kubernetes

O Kubernetes fornece uma maneira comum de executar cargas de trabalho em contêineres com configuração declarativa e automação de aprendizado de máquina, com o suporte de um grande e crescente conjunto de ferramentas e suporte à comunidade.

Por que isso ainda é importante para apps nativos de nuvem

À medida que as equipes constroem sistemas formados por vários serviços, workloads de curta duração e atualizações frequentes, o Kubernetes continua sendo uma base prática porque foca em operações repetíveis:

  • Operações consistentes entre ambientes (contêineres empacotados com dependências, executados da mesma maneira em todos os ambientes).

  • Um ecossistema amplo e ativo, com serviços, suporte e ferramentas amplamente disponíveis.

  • Extensibilidade por meio de add-ons, plug-ins criados pela comunidade e um programa de conformidade que mantém as APIs principais consistentes entre as versões.

Se você estiver criando ou executando cargas de trabalho, o Serviço de Kubernetes do Azure (AKS) ajuda a implantar e gerenciar aplicativos em contêineres, com o Azure gerenciando o painel de controle.

plano de fundo gradiente
Recursos
Desenvolvimento

Recursos do Azure

Explore as tecnologias mais recentes para desenvolvedores e descubra novas habilidades.
Treinamento

Introdução ao Kubernetes

Este curso orienta você sobre os tipos de problemas de negócios que você pode resolver usando o Kubernetes.
Educação

Microsoft Azure for Students

Adquira habilidades para iniciar sua carreira e causar um impacto positivo no mundo.
Perguntas frequentes

Perguntas frequentes

  • O Kubernetes é usado para implantar, gerenciar e dimensionar apps em contêineres em um cluster. Ele agenda workloads com base no processamento disponível, roteia o tráfego com descoberta de serviços e balanceamento de carga e ajuda a manter os apps em execução reiniciando ou substituindo contêineres com falha.
  • O Kubernetes é normalmente usado por desenvolvedores e administradores de plataforma que executam aplicativos em contêineres. Se você quiser menos manutenção do painel de controle, um serviço gerenciado, como o Serviço de Kubernetes do Azure (AKS), pode cuidar do plano de controle enquanto você se concentra nos nós e nos apps.
  • Sim. O Kubernetes pode executar apps em contêineres em infraestrutura local, e também dá suporte a cenários híbridos e multinuvem. Os contêineres continuam portáteis porque o app é empacotado separadamente das máquinas subjacentes.
  • Isso pode levar tempo porque há vários conceitos principais (clusters, nós, Pods, serviços). Comece com o básico, depois pratique implantando um app pequeno e siga uma trilha de aprendizado guiada para ganhar confiança.