This is the Trace Id: b916465361b8eff8952040554dcc9a3f
Avançar para o conteúdo principal
Azure
fundo com gradiente

O que é o Kubernetes?

Aprenda a executar contentores ao automatizar a implementação, a gestão e o dimensionamento.

Definição do Kubernetes

O Kubernetes é um software open-source que automatiza a implementação, a gestão e o dimensionamento de aplicações contentorizadas. Orquestra clusters de máquinas virtuais, agenda contentores e proporciona autorrecuperação, balanceamento de carga e portabilidade entre ambientes.

Principais conclusões

  • O Kubernetes é uma plataforma que ajuda a executar, controlar e expandir cargas de trabalho de contentores em vários servidores de um cluster.
  • Agrupa os contentores em Pods, enquanto um plano de controlo trata do agendamento e os controladores mantêm o estado pretendido.
  • Processa a deteção de serviços, o balanceamento de carga, o dimensionamento automático e a autorrecuperação (reinícios, substituições e reagendamento).
  • As equipas utilizam-no para versões portáteis entre ambientes e para monitorizar métricas de estado de funcionamento e estabilidade.

Explicação do Kubernetes

O Kubernetes é um software open-source que o DevOps utiliza para implementar, gerir e dimensionar contentores num cluster. O Docker, outra tecnologia open-source, é o formato de ficheiro de contentor predefinido normalmente utilizado em conjunto com o Kubernetes.

Contentores

Os contentores agrupam uma aplicação com as respetivas dependências e configuração para que possa ser executada de forma consistente em diferentes ambientes. À medida que uma aplicação evolui, poderá executar muitos contentores em vários servidores, e a coordenação manual de todos esses elementos torna-se complexa. O Kubernetes resolve essa complexidade através de uma API open-source e de um sistema de controlo que decide o que deve ser executado e onde, além de manter tudo em funcionamento.

O que o Kubernetes faz por si

Agendamento e colocação de recursos

O Kubernetes orquestra clusters de máquinas virtuais e agenda a execução de contentores com base nos recursos de computação disponíveis e nas necessidades de recursos de cada contentor.

Deteção de serviços e balanceamento de carga

O Kubernetes gere a deteção de serviços e o balanceamento de carga para encaminhar o tráfego para os Pods certos, mesmo quando os Pods mudam ao longo do tempo.

Dimensionamento para corresponder à procura

O Kubernetes dimensiona as cargas de trabalho com base na utilização dos recursos de computação e no estado pretendido que definir.

Autorrecuperação quando ocorrem falhas

O Kubernetes verifica o estado de funcionamento dos recursos e pode reiniciar ou replicar contentores quando ocorrem problemas. Reinicia ou substitui contentores com falhas e retém o tráfego até as cargas de trabalho estarem prontas.

Suporta alterações controladas

O Kubernetes suporta padrões de implementação para aplicações em execução, entre os quais implementações e reversões automatizadas com base no estado pretendido que descrever.

Gestão da configuração e dos segredos

O Kubernetes proporciona a gestão de segredos e da configuração para informações confidenciais, como palavras-passe ou tokens.

Orquestração de armazenamento

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

Glossário rápido de objetos

O Kubernetes baseia-se em objetos de API, ou seja, recursos que declara e gere. Seguem-se alguns exemplos:

  • Pod: a unidade básica que executa um ou mais contentores.

  • Serviço: uma forma estável de expor uma aplicação e encaminhar o tráfego para Pods que mudam ao longo do tempo.

  • Implementação: uma forma de descrever o estado pretendido de uma aplicação e atualizá-lo ao longo do tempo (frequentemente associada a implementações e reversões).

  • : um computador do cluster onde os Pods são executados.

  • Plano de controlo: componentes que gerem o estado do cluster e as decisões de agendamento.

Como todos os elementos funcionam em conjunto

  1. Declare o estado pretendido da sua aplicação (o que deve ser executado, quantas cópias e quais as necessidades de recursos).

  2. O plano de controlo regista esse pedido e atua sobre o mesmo através da API do Kubernetes e do armazenamento subjacente.

  3. O componente de agendamento coloca os Pods em nós com recursos suficientes.

  4. Os componentes dos nós executam a carga de trabalho.

  5. Os controladores efetuam continuamente os ajustes necessários para que o estado real corresponda ao estado pretendido, através do dimensionamento, da substituição e da atualização das cargas de trabalho conforme necessário.

Arquitetura do Kubernetes

Os principais blocos modulares

Cluster: plano de controlo e nós de trabalho

Um cluster do Kubernetes é normalmente descrito em duas partes: um plano de controlo que gere o cluster e nós de trabalho que executam as suas cargas de trabalho.

Componentes do plano de controlo

Estes componentes gerem o estado geral do cluster:

  • kube-apiserver: expõe a API HTTP do Kubernetes (a porta de entrada dos pedidos).

  • etcd: um arquivo de chave-valor consistente e de elevada disponibilidade para os dados do cluster.

  • kube-scheduler: localiza os Pods que precisam de ser colocados e atribui-os a um nó.

  • kube-controller-manager: executa controladores que alinham o estado real com o estado pretendido.

  • cloud-controller-manager (opcional): liga o Kubernetes à lógica de controlo específica do fornecedor de cloud.

Componentes dos nós

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

  • kubelet: garante que os Pods e os respetivos contentores estão em execução no nó.

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

  • runtime de contentores: executa contentores no nó.

Pods: a unidade básica de trabalho

O Kubernetes não agenda diretamente contentores individuais em termos abstratos. Agrupa um ou mais contentores num Pod, que se torna a unidade operacional básica. Em seguida, os Pods são aumentados ou reduzidos verticalmente até atingirem o estado pretendido que definir.

Na prática, significa o seguinte:

  1. Descreva a aplicação que pretende manter em execução.

  2. O Kubernetes agenda os Pods em computadores com recursos de computação disponíveis.

  3. Os controladores mantêm o cluster a avançar para o estado que pediu.

Rede de serviços

Os Pods podem surgir e desaparecer, pelo que o Kubernetes disponibiliza primitivas, ou seja, blocos modulares básicos que pode combinar para descrever e executar aplicações num cluster e que proporcionam formas estáveis de aceder às cargas de trabalho.

Noções básicas de rede de Pods

Cada Pod recebe o seu próprio endereço IP válido em todo o cluster e os Pods podem 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 estável ou nome do anfitrião para um conjunto de Pods de back-end, mesmo à medida que cada Pod muda ao longo do tempo.

EndpointSlice

O Kubernetes mantém objetos EndpointSlice para monitorizar os Pods que suportam atualmente um serviço.

Ingress/Gateway API

Para expor serviços a clientes fora do cluster, o Kubernetes suporta a API de Gateway (e o Ingress como respetivo antecessor).

Serviços LoadBalancer

Alguns ambientes podem expor externamente um serviço através do tipo de serviço LoadBalancer.

Suplementos que pode executar num cluster

Os clusters do Kubernetes incluem frequentemente suplementos que expandem a funcionalidade para além dos componentes principais. Os exemplos incluem:

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

  • IU Web (dashboard) para gestão de clusters.

  • Monitorização de recursos de contentores para recolha de métricas.

  • Registo ao nível do cluster para recolher registos centralmente.

Como funciona o Kubernetes?

O Kubernetes executa aplicações contentorizadas num cluster de computadores e mantém-nas no estado que descrever. Para tal, coloca o trabalho nos computadores certos, encaminha o tráfego para os locais certos e monitoriza falhas e alterações.

O fluxo básico

1. Descreva o que pretende executar

A maioria das cargas de trabalho do Kubernetes começa com um "estado pretendido" declarado (o que deve estar em execução, quantas cópias e de que forma devem ser expostas). O Kubernetes baseia-se em configuração declarativa e automatização.

2. O Kubernetes decide onde executar

O Kubernetes agenda contentores em computadores do cluster com base nos recursos de computação disponíveis e nas necessidades de cada contentor. Os contentores são executados dentro de Pods, a unidade que o Kubernetes coloca num computador.

3. O Kubernetes continua a verificar se a realidade corresponde ao seu estado pretendido

Os controladores monitorizam o cluster, trabalham para aproximar o estado atual do estado pretendido e utilizam o servidor de API para efetuar alterações.

Agendamento de contentores e gestão quotidiana

O agendamento responde à pergunta "onde deve ser executada a carga de trabalho?" decisão.

1. São agendados Pods, não contentores individuais

O Kubernetes agrupa contentores em Pods e, em seguida, coloca esses Pods em computadores.

2. O componente de agendamento atribui os Pods a um nó adequado

O kube-scheduler procura Pods que ainda não estejam atribuídos e seleciona um nó para os mesmos.

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

Em cada nó, o kubelet garante que os Pods estão em execução (bem como os respetivos contentores).

Balanceamento de carga e deteção de serviços

Os contentores e os Pods podem ser criados, movidos ou substituídos, pelo que as aplicações precisam de formas estáveis de se encontrarem entre si.

A deteção de serviços e o balanceamento de carga são comportamentos incorporados

O Kubernetes gere a deteção de serviços e utiliza o balanceamento de carga para encaminhar o tráfego, mesmo quando os Pods mudam ao longo do tempo.

Os serviços proporcionam um endereço estável para um conjunto variável de Pods

A API de Serviço proporciona um endereço IP ou nome do anfitrião estável para um serviço suportado por um ou mais Pods, e o Kubernetes monitoriza os Pods subjacentes através de objetos EndpointSlice.

O encaminhamento do tráfego é atualizado à medida que os Pods mudam

Quando os Pods subjacentes a um serviço mudam, o encaminhamento do serviço adapta-se para que o tráfego continue a chegar aos back-ends atuais.

Dimensionamento de aplicações (e a importância do "estado pretendido")

O Kubernetes pode dimensionar as cargas de trabalho até ao estado que definir e efetuar esse dimensionamento com base na utilização dos recursos de computação.

Os conceitos comuns de dimensionamento incluem:

  • Mais réplicas (mais Pods) para processar uma procura mais elevada.

  • Menos réplicas quando a procura diminui.

  • Monitorização de recursos para que as decisões de colocação reflitam as necessidades de CPU e memória.

Esta abordagem remete para o modelo de "estado pretendido": especifique o objetivo e os controladores continuarão a trabalhar para o atingir.

Autorrecuperação: o que acontece quando algo falha

O Kubernetes inclui comportamentos de autorrecuperação destinados a manter o estado de funcionamento e a disponibilidade das cargas de trabalho. Estes incluem:

  • Reinício de contentores com falhas (reinícios ao nível do contentor).

  • Substituição de Pods com falhas para manter o número de réplicas pedido (substituição de réplicas).

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

  • Remoção de Pods com falhas dos pontos finais de serviço para que o tráfego seja encaminhado apenas para Pods em bom estado de funcionamento (balanceamento de carga para serviços).

A autorrecuperação verifica o estado de funcionamento dos contentores e reinicia-os ou replica-os quando ocorrem problemas.

A função dos KPIs do Kubernetes

Os indicadores chave de desempenho (KPIs ou métricas) são utilizados para compreender o estado de funcionamento do cluster e o comportamento das cargas de trabalho.

Origem dos KPIs

  • Os componentes do sistema Kubernetes emitem métricas (formato Prometheus) úteis para dashboards e alertas.

  • As métricas estão normalmente disponíveis no ponto final HTTP /metrics de cada componente, como kube-apiserver, kube-scheduler, kubelet, kube-proxy e kube-controller-manager.

Exemplos do que os KPIs ajudam a detetar

  • Indicadores do estado de funcionamento do cluster (métricas ao nível dos componentes e padrões de erro)

  • Estabilidade das cargas de trabalho (por exemplo, reinícios ou substituições frequentes)

  • Pressão sobre a capacidade (alocação de recursos face à procura, associada a decisões de dimensionamento)

Porque é importante nas operações quotidianas

A monitorização proporciona às equipas uma visão mais completa dos recursos do cluster, da API do Kubernetes, dos contentores e dos registos, o que reduz o ciclo de feedback entre os problemas e as correções.

Benefícios e casos de utilização

O Kubernetes é frequentemente escolhido quando as equipas precisam de uma forma consistente de executar muitos contentores em vários computadores, com o encaminhamento do tráfego, o dimensionamento e a recuperação processados pela plataforma.

Escalabilidade

O Kubernetes pode dimensionar as cargas de trabalho, ou seja, aumentá-las ou reduzi-las à medida que a procura muda, até atingirem um estado de destino, e pode efetuar esse dimensionamento com base na utilização dos recursos de computação.

Casos de utilização comuns

  • Aplicações Web com tráfego variável (campanhas, picos sazonais): ajuste as réplicas à medida que a carga muda.

  • Processamento em lote ou orientado por eventos: adicione capacidade para picos e, em seguida, reduza-a novamente.

  • Microsserviços: dimensione serviços específicos sem dimensionar toda a aplicação.

Eficiência de recursos

O Kubernetes suporta o acondicionamento automático, que consiste em colocar contentores em nós com base nas necessidades de CPU e memória para uma melhor utilização dos recursos disponíveis. Também monitoriza a alocação de recursos ao gerir as cargas de trabalho.

Casos de utilização comuns

  • Clusters partilhados por várias equipas: reduza a capacidade desperdiçada ao colocar as cargas de trabalho onde existam recursos disponíveis.

  • Clusters com cargas de trabalho mistas (serviços e tarefas): mantenha os nós ocupados sem colocação manual.

Deteção de serviços e balanceamento de carga

O Kubernetes pode expor cargas de trabalho através de DNS ou de um endereço IP e distribuir o tráfego de rede para manter as implementações estáveis. Também gere a deteção de serviços e incorpora o balanceamento de carga à medida que as cargas de trabalho mudam.

Casos de utilização comuns

  • Comunicação entre microsserviços: os serviços encontram-se entre si através de nomes estáveis enquanto os Pods mudam.

  • APIs internas subjacentes a um ponto final estável: encaminhe o tráfego apenas para os back-ends atuais.

Autorrecuperação

O Kubernetes foi concebido para substituir contentores com falhas, reagendar cargas de trabalho quando os nós ficam indisponíveis e manter o estado pretendido. Os exemplos incluem reinícios de contentores, substituição de réplicas e remoção de Pods em mau estado de funcionamento dos pontos finais de serviço, para que o tráfego seja encaminhado apenas para Pods em bom estado de funcionamento.

Casos de utilização comuns

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

  • Clusters com substituições frequentes de nós: reagende as cargas de trabalho quando um nó fica indisponível.

  • Serviços subjacentes a um serviço: deixe de encaminhar tráfego para Pods em mau estado de funcionamento.

Versões mais seguras

O Kubernetes suporta implementações e reversões automatizadas. Descreva o estado pretendido e o Kubernetes aproxima gradualmente o estado real do mesmo a um ritmo controlado.

Casos de utilização comuns

  • Atualizações frequentes de aplicações: implemente as alterações gradualmente e reverta-as, se necessário.

  • Equipas que disponibilizam vários serviços: mantenha mecanismos de versão consistentes entre aplicações.

Portabilidade

As aplicações contentorizadas estão separadas da infraestrutura, e o Kubernetes ajuda a transferi-las de computadores locais para produção em ambientes no local, sem servidor, de cloud híbrida e multicloud, bem como a manter a consistência entre ambientes.

Casos de utilização comuns

  • Paridade entre dev/test/prod: mantenha o mesmo modelo de empacotamento e agendamento em todos os ambientes.

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

Comece a utilizar o Kubernetes

O Kubernetes proporciona uma forma comum de executar cargas de trabalho contentorizadas com configuração declarativa e automatização de aprendizagem automática, sustentada por um conjunto amplo e crescente de ferramentas e pelo suporte da comunidade.

Porque continua a ser importante para aplicações nativas de cloud

À medida que as equipas criam sistemas compostos por muitos serviços, cargas de trabalho de curta duração e atualizações frequentes, o Kubernetes continua a ser uma base prática por se concentrar em operações repetíveis:

  • Operações consistentes entre ambientes (contentores agrupados com dependências e executados da mesma forma em todos os ambientes).

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

  • Extensibilidade através de suplementos e plug-ins criados pela comunidade e de um programa de conformidade que mantém as APIs principais consistentes entre versões.

Se estiver a criar ou a executar cargas de trabalho, o Azure Kubernetes Service (AKS) ajuda a implementar e gerir aplicações contentorizadas, enquanto o Azure gere o plano de controlo.

fundo com gradiente
Recursos
Desenvolvimento

Recursos do Azure

Explore a tecnologia de programador mais recente e descubra novas competências.
Formação

Introdução ao Kubernetes

Este curso apresenta os tipos de problemas empresariais que pode resolver ao utilizar o Kubernetes.
Educação

Microsoft Azure for Students

Adquira competências para dar início à sua carreira e ter um impacto positivo no mundo.
FAQ

Perguntas frequentes

  • O Kubernetes é utilizado para implementar, gerir e dimensionar aplicações contentorizadas num cluster. Agenda cargas de trabalho com base nos recursos de computação disponíveis, encaminha o tráfego através da deteção de serviços e do balanceamento de carga e ajuda a manter as aplicações em execução ao reiniciar ou substituir contentores com falhas.
  • O Kubernetes é normalmente utilizado por programadores e administradores de plataformas que executam aplicações contentorizadas. Caso pretenda reduzir a manutenção do plano de controlo, um serviço gerido, como o Azure Kubernetes Service (AKS), pode processar o plano de controlo enquanto se concentra nos nós e nas aplicações.
  • Sim. O Kubernetes pode executar aplicações contentorizadas em infraestruturas locais ou em infraestruturas no local e também suporta configurações híbridas e multicloud. Os contentores mantêm-se portáteis porque a aplicação é agrupada separadamente dos computadores subjacentes.
  • Pode demorar algum tempo, pois existem vários conceitos principais (clusters, nós, Pods e serviços). Comece com as noções básicas, pratique ao implementar uma pequena aplicação e siga um percurso de aprendizagem assistido para criar confiança.