Parte 2/3 – Learn: Desvendando o poderoso Kubernetes – Por dentro dos seus componentes

No artigo anterior, da nossa série sobre Kubernetes, você aprendeu sobre a origem do Kubernetes, o que são e para que servem os containers, pods e clusters. 

Neste segundo artigo, você vai aprender sobre os componentes do Kubernetes. Quais são eles, como funcionam e para que servem. 


Vamos iniciar falando sobre os componentes principais .. 

São os componentes principais que fornecem o controle do cluster, além de serem responsáveis por executar decisões globais sobre o cluster (por exemplo, agendamento), também detectam e respondem por eventos do cluster.

Você pode ler também:

Os componentes principais podem ser rodados em qualquer máquina no cluster. Para simplificar, os scripts de configuração normalmente iniciam todos os componentes principais na mesma máquina e não rodam containers de usuários nesta máquina.

ETCD:

O ETCD é o armazenamento de alta disponibilidade de informações chamadas de consistentes. Ele é utilizado como armazenamento de apoio para todos os dados de clusters do Kubernetes.

Rede-Flannel

Se o seu cluster de Kubernetes usa o ETCD como seu repositório de apoio, é importante vocÊ se certificar de que tem um plano de backup para esses dados.

Kube-scheduler:

O Kube-scheduler é o componente do master, ele observa os novos pods criados, que não possuem nenhum nó atribuído e permite que seja selecionado um nó para eles conseguirem rodar.

Resultado de imagem para kube scheduler

Os fatores levados em conta para decisões de agendamento são: requisitos individuais e coletivos de recurso, hardware/software/contratos de política, especificações de afinidade e anti-afinidade, dados locais e interferência entre cargas de trabalho e prazos.

Kube-controller-manager:

Kube-controller-manager é o componente do master que roda os controladores. Pensando pela lógica, cada controle tem um processo diferente, mas para reduzir a complexidade, eles são compilados em um único binário e rodam em um único processo.

Esses controladores incluem:

  • Node controller: são responsáveis por noticiar e responder quando os nós caem.
  • Replication controller: é responsável por manter o número correto de pods para cada objeto do controlador de replicação no sistema.
  • Endpoints: preenche o objeto Endpoints (isso é, junta serviços e pods)
  • Service Account & Token Controllers: cria contas padrão e tokens de acesso à API para novos ingressantes.
Cloud Controller Manager

São controladores que interagem com os provedores de cloud. O binário cloud-controller-manager é um recurso introduzido no Kubernetes versão 1.6.

O Cloud Controller Manager executa somente loops de controlador específicos do provedor de cloud. Você pode desabilitar os loops do controlador definindo o sinalizador- cloud-provider como external ao iniciar o kube-controller-manager.

O Cloud Controller Manager permite também que o código do fornecedor de cloud e o código de Kubernetes possa evoluir independentemente um do outro. Em versões anteriores, o código principal do Kubernetes era dependente de um código específico do provedor de cloud para funcionalidade. 

Resultado de imagem para cloud controller manager

Os seguintes controladores que dependem de um servidor cloud:

  • Node Controller: serve para checagem do provedor de cloud, para determinar se um nó foi deletado na cloud depois de parar de responder.
  • Route Controller: serve para definir rotas na estrutura de cloud.
  • Service Controller: para criar, atualizar e deletar balanceadores de carga do provedor de cloud.
  • Volume Controller: para criar, anexar, volumes de montagem e interagir com o provedor de cloud para orquestrar volumes.
Componentes dos nós

Os componentes dos nós rodam em qualquer nó. O mantendo e rodando os pods e fornecendo o  ambiente de tempo de execução do Kubernetes.

API do Kubernetes 

O Kubernetes é construído em torno de uma robusta API RESTful. Cada ação realizada no Kubernetes, seja comunicação entre componentes ou comando do usuário, interage de alguma forma com a API do Kubernetes. O objetivo da API é ajudar a facilitar o estado desejado do cluster do Kubernetes.

A API do Kubernetes é um “modelo declarativo”, o que significa que se concentra no que, e não no como. Você diz o que você quer realizar e faz. Isso pode envolver a criação ou a destruição de recursos, mas você não precisa se preocupar com esses detalhes. Para criar esse estado desejado, crie objetos , que normalmente são representados por arquivos YAML chamados manifestos , e aplique-os por meio da linha de comando com a ferramenta kubectl .

Kubelet

Kubelet é um agente que roda em cada nó no cluster. 

O Kubelet leva um conjunto de PodSpecs que são fornecidos por vários mecanismos e garantem que os containers descritos nesses PodSpecs estejam funcionando e sejam saudáveis. O kubelet só gerencia containers que foram criados pelo Kubernetes.

Kube-proxy

O Kube-proxy é um proxy de rede que roda em cada nó do cluster. Ele permite a abstração do serviço Kubernetes, mantendo as regras de rede no host e realizando o encaminhamento de conexões.

O Kube-proxy permite o encaminhamento de fluxo TCP, UDP ou round-robin TCP e encaminhamento UDP em um conjunto de funções de back-end.

Tempo de execução dos Containers

É o software que é responsável por rodar os containers.

O Kubernetes suporta vários tempos de execução de containers: Docker, containerd, cri-o, rktlet, e qualquer implementação do Kubernetes CRI.

Addons

Addons usam os recursos do Kubernetes (DaemoSet, Desenvolvimento, etc) para implementar características do cluster. Como eles fornecem recursos no nível do cluster, os recursos com namespaces para os addons pertencem ao namespace do sistema kube.

Como selecionar addons:
DNS

O Cluster DNS é um servidor DNS, além de outros servidores DNS em seu ambiente, que serve para registrar DNS nos serviços do Kubernetes.

Enquanto os outros addons não são obrigatoriamente necessários, todos os clusters do Kubernetes devem ter o cluster DNS.

Web UI (Dashboard)

O Web UI Dashboard é uma interface de usuário, baseada em web, usada para clusters de Kubernetes. Ela permite que os usuários gerenciem e solucionem problemas de aplicativos em execução no cluster, bem como o próprio cluster.

Container Resource Monitoring

Container Resource Monitoring é o processo de rastrear a operação de um aplicativo em container. Ele grava métricas genéricas de séries temporais sobre containers em um banco de dados central e fornece uma interface para o usuário navegar nesses dados.

Cluster-level Logging

O Cluster-Level-Logging é responsável por salvar os logs de container em um armazenamento de log central, que funciona com interface de pesquisa/navegação.

Você gostou do artigo? Continue acompanhando a série!

No próximo artigo falaremos sobre cases de sucesso com Kubernetes. empresas que estão adotando Kubernetes como principal gerenciador de containers, e os resultados obtidos após esta mudança.

Acompanhe a Kumulus nas redes sociais: