# Componentes do Kubernetes

> Um cluster Kubernetes consiste de componentes que são parte da camada de gerenciamento e de um conjunto de máquinas chamadas nós.

---

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->
Ao implantar o Kubernetes, você obtém um cluster.
<p><p>Um cluster Kubernetes consiste em um conjunto de servidores de processamento, chamados
<a class='glossary-tooltip' title='Um Nó é uma máquina de trabalho no Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/architecture/nodes/' target='_blank' aria-label='nós'>nós</a>, que executam aplicações
conteinerizadas. Todo cluster possui ao menos um servidor de processamento
(<em>worker node</em>).</p></p>
<p>O(s) servidor(es) de processamento hospeda(m) os
<a class='glossary-tooltip' title='O menor e mais simples objeto Kubernetes. Um Pod representa um conjunto de contêineres em execução no seu cluster.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/workloads/pods/' target='_blank' aria-label='Pods'>Pods</a>, que são componentes de uma
aplicação. A <a class='glossary-tooltip' title='A camada de gerenciamento de contêiner que expõe a API e as interfaces para definir, implantar e gerenciar o ciclo de vida dos contêineres.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/reference/glossary/?all=true#term-control-plane' target='_blank' aria-label='camada de gerenciamento'>camada de gerenciamento</a>
gerencia os nós de processamento e os Pods no cluster. Em ambientes de produção,
a camada de gerenciamento geralmente executa em múltiplos computadores e um
cluster geralmente executa múltiplos nós, fornecendo tolerância a falhas e alta
disponibilidade.</p>

Este documento descreve os vários componentes que você precisa ter para implantar
um cluster Kubernetes completo e funcional.



<figure class="diagram-large ">
    <img src="/images/docs/components-of-kubernetes.svg"
         alt="Componentes do Kubernetes"/> <figcaption>
            <p>Os componentes de um cluster do Kubernetes</p>
        </figcaption>
</figure>

<!-- body -->
## Componentes da camada de gerenciamento

Os componentes da camada de gerenciamento tomam decisões globais sobre o cluster
(por exemplo, alocação de Pods), bem como detectam e respondem aos eventos
do cluster (por exemplo, inicialização de um novo <a class='glossary-tooltip' title='O menor e mais simples objeto Kubernetes. Um Pod representa um conjunto de contêineres em execução no seu cluster.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/workloads/pods/' target='_blank' aria-label='Pod'>Pod</a>
quando o campo `replicas` de um Deployment não está atendido).

Os componentes da camada de gerenciamento podem ser executados em qualquer máquina
do cluster. Contudo, para simplificar, os scripts de configuração normalmente
iniciam todos os componentes da camada de gerenciamento na mesma máquina, e
contêineres com cargas de trabalho do usuário não rodam nesta máquina. Veja
[Construindo clusters altamente disponíveis com o kubeadm](/docs/setup/production-environment/tools/kubeadm/high-availability/)
para um exemplo de configuração da camada de gerenciamento que roda em múltiplas
máquinas.

### kube-apiserver

<p>O servidor da API é um componente da <a class='glossary-tooltip' title='A camada de gerenciamento de contêiner que expõe a API e as interfaces para definir, implantar e gerenciar o ciclo de vida dos contêineres.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/reference/glossary/?all=true#term-control-plane' target='_blank' aria-label='camada de gerenciamento'>camada de gerenciamento</a>
do Kubernetes que expõe a API do Kubernetes.
O servidor da API é o <em>front end</em> para a camada de gerenciamento do Kubernetes.</p>
<p>A principal implementação de um servidor de API do Kubernetes é o
<a href="/docs/reference/command-line-tools-reference/kube-apiserver/">kube-apiserver</a>.
O kube-apiserver foi projetado para ser escalonado horizontalmente — ou seja,
ele pode ser escalonado com a criação de mais instâncias.
Você pode executar várias instâncias do kube-apiserver e distribuir o tráfego
entre essas instâncias.</p>

### etcd

<p>Armazenamento do tipo chave-valor consistente e de alta-disponibilidade, usado
como armazenamento de apoio do Kubernetes para todos os dados do cluster.</p>
<p>Se o seu cluster Kubernetes usa o etcd como seu armazenamento de apoio,
certifique-se de ter um plano de
<a href="/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster"><em>backup</em></a>
para seus dados.</p>
<p>Você pode encontrar informações detalhadas sobre o etcd na <a href="https://etcd.io/docs/">documentação</a>
oficial.</p>

### kube-scheduler

<p>Componente da camada de gerenciamento que observa os
<a class='glossary-tooltip' title='O menor e mais simples objeto Kubernetes. Um Pod representa um conjunto de contêineres em execução no seu cluster.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/workloads/pods/' target='_blank' aria-label='Pods'>Pods</a> recém-criados e que ainda não
foram atribuídos a um <a class='glossary-tooltip' title='Um Nó é uma máquina de trabalho no Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/architecture/nodes/' target='_blank' aria-label='nó'>nó</a>, e
seleciona um nó para executá-los.</p>
<p>Os fatores levados em consideração para as decisões de alocação incluem:
requisitos de recursos individuais e coletivos, restrições de hardware/software/política,
especificações de afinidade e antiafinidade, localidade de dados, interferência
entre cargas de trabalho, e prazos.</p>

### kube-controller-manager

<p>Componente da camada de gerenciamento que executa os processos de
<a class='glossary-tooltip' title='Um ciclo de controle que observa o estado partilhado do cluster através do API Server e efetua mudanças tentando mover o estado atual em direção ao estado desejado.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/architecture/controller/' target='_blank' aria-label='controlador'>controlador</a>.</p>
<p>Logicamente, cada <a class='glossary-tooltip' title='Um ciclo de controle que observa o estado partilhado do cluster através do API Server e efetua mudanças tentando mover o estado atual em direção ao estado desejado.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/architecture/controller/' target='_blank' aria-label='controlador'>controlador</a>
está em um processo separado, mas para reduzir a complexidade, eles todos são
compilados num único binário e executam em um processo único.</p>

Alguns tipos desses controladores são:

  * Controlador de nó: responsável por perceber e responder quando os nós caem.
  * Controlador de Jobs: observa os objetos Job, que representam tarefas únicas, e em seguida cria Pods para executar essas tarefas até a conclusão.
  * Controlador de EndpointSlice: preenche o objeto EndpointSlice (conecta os objetos Service e Pod).
  * Controlador de ServiceAccount: cria a ServiceAccount `default` para novos namespaces.

### cloud-controller-manager

Um componente da <a class='glossary-tooltip' title='A camada de gerenciamento de contêiner que expõe a API e as interfaces para definir, implantar e gerenciar o ciclo de vida dos contêineres.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/reference/glossary/?all=true#term-control-plane' target='_blank' aria-label='camada de gerenciamento'>camada de gerenciamento</a> do Kubernetes
que incorpora a lógica de controle específica da nuvem. O gerenciador de controle de nuvem permite que você vincule seu
<em>cluster</em> na API do seu provedor de nuvem, e separar os componentes que interagem com essa plataforma de nuvem a partir de componentes que apenas interagem com seu cluster.

O cloud-controller-manager executa apenas controladores que são específicos para seu provedor de nuvem.
Se você estiver executando o Kubernetes em suas próprias instalações ou em um ambiente de aprendizagem dentro de seu
próprio PC, o cluster não possui um gerenciador de controlador de nuvem.

Tal como acontece com o kube-controller-manager, o cloud-controller-manager combina
vários ciclos de controle logicamente independentes em um binário único que você
executa como um processo único. Você pode escalonar horizontalmente (executar mais
de uma cópia) para melhorar o desempenho ou para auxiliar na tolerância a falhas.

Os seguintes controladores podem ter dependências de provedor de nuvem:

  * Controlador de nó: para verificar junto ao provedor de nuvem para determinar se um nó foi excluído da nuvem após parar de responder.
  * Controlador de rota: para configurar rotas na infraestrutura de nuvem subjacente.
  * Controlador de serviço: para criar, atualizar e excluir balanceadores de carga do provedor de nuvem.

## Componentes do nó {#node-components}

Os componentes do nó são executados em todos os nós, mantendo os Pods em execução
e fornecendo o ambiente de execução do Kubernetes.

### kubelet

<p>Um agente que é executado em cada <a class='glossary-tooltip' title='Um Nó é uma máquina de trabalho no Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/architecture/nodes/' target='_blank' aria-label='nó'>nó</a>
no cluster. Ele garante que os <a class='glossary-tooltip' title='Uma imagem executável leve e portável que contém software e todas as suas dependências.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/containers/' target='_blank' aria-label='contêineres'>contêineres</a>
estejam sendo executados em um <a class='glossary-tooltip' title='O menor e mais simples objeto Kubernetes. Um Pod representa um conjunto de contêineres em execução no seu cluster.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/workloads/pods/' target='_blank' aria-label='Pod'>Pod</a>.</p>
<p>O kubelet utiliza um conjunto de PodSpecs que são fornecidos por vários mecanismos
e garante que os contêineres descritos nesses PodSpecs estejam funcionando corretamente.
O kubelet não gerencia contêineres que não foram criados pelo Kubernetes.</p>

### kube-proxy

<p>kube-proxy é um <em>proxy</em> de rede executado em cada <a class='glossary-tooltip' title='Um Nó é uma máquina de trabalho no Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/architecture/nodes/' target='_blank' aria-label='nó'>nó</a> no seu <em>cluster</em>,
implementando parte do conceito de <a class='glossary-tooltip' title='Uma forma abstrata de expor uma aplicação que está executando em um conjunto de Pods como um serviço de rede.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/services-networking/service/' target='_blank' aria-label='serviço'>serviço</a> do Kubernetes.</p>
<p><a href="/docs/reference/command-line-tools-reference/kube-proxy/">kube-proxy</a>
mantém regras de rede nos nós. Estas regras de rede permitem a comunicação de rede com seus <em>pods</em> a partir de sessões de rede dentro ou fora de seu <em>cluster</em>.</p>
<p>kube-proxy usa a camada de filtragem de pacotes do sistema operacional se houver uma e estiver disponível. Caso contrário, o kube-proxy encaminha o tráfego ele mesmo.</p>

### Agente de execução de contêiner {#container-runtime}

<p>O agente de execução (<em>runtime</em>) de contêiner é o software responsável por executar os contêineres.</p>
<p>O Kubernetes suporta diversos agentes de execução de contêineres: <a class='glossary-tooltip' title='Docker é uma tecnologia de software que fornece virtualização a nível do sistema operacional, também conhecida como contêineres.' data-bs-toggle='tooltip' data-bs-placement='top' href='https://docs.docker.com/engine/' target='_blank' aria-label='Docker'>Docker</a>, <a class='glossary-tooltip' title='Um agente de execução de contêiner com enfase em simplicidade, robustez e portabilidade' data-bs-toggle='tooltip' data-bs-placement='top' href='https://containerd.io/docs/' target='_blank' aria-label='containerd'>containerd</a>, <a class='glossary-tooltip' title='Um agente de execução leve de contêineres criado especificamente para o Kubernetes' data-bs-toggle='tooltip' data-bs-placement='top' href='https://cri-o.io/#what-is-cri-o' target='_blank' aria-label='CRI-O'>CRI-O</a>, e qualquer implementação do <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md">Kubernetes CRI (Container Runtime Interface)</a>.</p>

## Complementos (_addons_) {#addons}

Complementos (_addons_) usam recursos do Kubernetes (<a class='glossary-tooltip' title='Garante que uma cópia de um Pod esteja sendo executada em um conjunto de nós em um cluster.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/workloads/controllers/daemonset' target='_blank' aria-label='DaemonSet'>DaemonSet</a>,
<a class='glossary-tooltip' title='Gerencia uma aplicação replicada no seu cluster.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/workloads/controllers/deployment/' target='_blank' aria-label='Deployment'>Deployment</a>, etc) para implementar funcionalidades
do cluster. Como fornecem funcionalidades em nível do cluster, recursos de complementos
que necessitem ser criados dentro de um namespace pertencem ao namespace `kube-system`.

Alguns complementos selecionados são descritos abaixo; para uma lista estendida dos
complementos disponíveis, consulte [Instalando Complementos](/pt-br/docs/concepts/cluster-administration/addons/).

### DNS

Embora os outros complementos não sejam estritamente necessários, todos os clusters
do Kubernetes devem ter um [DNS do cluster](/docs/concepts/services-networking/dns-pod-service/),
já que muitos exemplos dependem disso.

O DNS do cluster é um servidor DNS, além de outros servidores DNS em seu ambiente,
que fornece registros DNS para serviços do Kubernetes.

Os contêineres iniciados pelo Kubernetes incluem automaticamente esse servidor DNS em suas pesquisas DNS.

### Web UI (Dashboard)

O [dashboard](/docs/tasks/access-application-cluster/web-ui-dashboard/) é uma interface
de usuário Web, de uso geral, para clusters do Kubernetes. Ele permite que os
usuários gerenciem e solucionem problemas de aplicações em execução no cluster,
bem como o próprio cluster.

### Monitoramento de recursos do contêiner

O [monitoramento de recursos do contêiner](/docs/tasks/debug/debug-cluster/resource-usage-monitoring/)
registra métricas de série temporal genéricas sobre os contêineres em um banco de
dados central e fornece uma interface de usuário para navegar por esses dados.

### Logging a nivel do cluster

Um mecanismo de [_logging_ a nível do cluster](/pt-br/docs/concepts/cluster-administration/logging/)
é responsável por guardar os _logs_ dos contêineres em um armazenamento central de
_logs_ com uma interface para navegação/pesquisa.

## Próximos passos

* Aprenda sobre [Nós](/pt-br/docs/concepts/architecture/nodes/).
* Aprenda sobre [Controladores](/pt-br/docs/concepts/architecture/controller/).
* Aprenda sobre [kube-scheduler](/pt-br/docs/concepts/scheduling-eviction/kube-scheduler/).
* Leia a [documentação](https://etcd.io/docs/) oficial do etcd.
