Login / Registre-se Account

Containers

Introdução à arquitetura do Kubernetes

Se você só conhece o básico sobre o Kubernetes, sabe que ele é uma plataforma de orquestração de containers open source criada para executar serviços e aplicações distribuídos em escala. Mas talvez você não entenda os componentes dessa plataforma nem como eles interagem.

Vejamos um resumo dos princípios de design que formam o Kubernetes e vamos explorar como os diferentes componentes dele funcionam juntos.

Princípios de design do Kubernetes

O design de um cluster Kubernetes é baseado em três princípios, conforme explicamos nos Detalhes da implementação do Kubernetes.

O cluster Kubernetes precisa ser:

  • Seguro: seguir as práticas recomendadas de segurança mais avançadas.
  • Fácil de usar: alguns comandos são suficientes para operá-lo. 
  • Extensível: ele não deve favorecer um fornecedor e precisa ser personalizável por meio de um arquivo de configuração.

Quais são os componentes do cluster Kubernetes?

Uma implantação do Kubernetes em funcionamento é chamada de cluster. Ele é dividido em duas partes: o plano de controle e as máquinas de computação (ou nós). Cada nó tem o próprio ambiente Linux®, que pode ser físico ou uma máquina virtual. Os nós executam pods, que são formados por containers.

O diagrama mostra como as partes do cluster Kubernetes se relacionam:

O que acontece no plano de controle do Kubernetes?

Plano de controle

Vamos começar com a parte mais importante do cluster Kubernetes: o plano de controle. É nele que estão os componentes do Kubernetes que controlam o cluster e os dados sobre o estado e a configuração do cluster. Esses componentes essenciais do Kubernetes desempenham um papel importante: eles asseguram que os containers sejam executados na quantidade suficiente e com os recursos necessários. 

O plano de controle está sempre se comunicando com as máquinas de computação. Quando você configura a execução do cluster, o plano de controle faz com que isso aconteça de acordo com o planejado.

kube-apiserver

Você precisa interagir com o cluster do Kubernetes? Use a API. A API do Kubernetes é o front-end do plano de controle. Ela processa solicitações internas e externas. O servidor da API determina se uma solicitação é válida. Se for, ela a processa. É possível acessar a API por meio de chamadas REST, da interface de linha de comando kubectl ou de outras ferramentas relacionadas, como a kubeadm.

kube-scheduler

Seu cluster é íntegro? Se você precisar de novos containers, onde eles ficarão? Isso é um trabalho para o programador Kubernetes.

Ele analisa quais os recursos de que um pod necessita, como CPU e memória. E também avalia integridade do cluster. Depois, ele programa o pod no nó de computação apropriado.

kube-controller-manager

Os controladores ficam encarregados de executar o cluster, enquanto o gerenciador de controladores do Kubernetes executa várias funções relacionadas de maneira unificada. Há um controlador que consulta o programador para se certificar de que o número correto de pods esteja em execução. Se algum pod ficar inativo, outro controlador perceberá e corrigirá esse problema. Há um controlador conecta os serviços aos pods para que as solicitações cheguem aos endpoints corretos. E outros que criam tokens de acesso a APIs e contas.

etcd

O etcd é um banco de dados de armazenamento de chave/valor que contém as informações e dados de configuração sobre o estado do cluster. Ele é distribuído, tolerante a falhas e foi projetado para ser a principal fonte de informações sobre o cluster.

O que acontece no nó do Kubernetes?

Nós

O cluster Kubernetes precisa de pelo menos um nó de computação, mas ele geralmente tem vários. Os pods são programados e orquestrados para serem executados nos nós. Precisa aumentar a capacidade do cluster? Basta adicionar mais nós.

Pods

O pod é a menor e mais simples unidade do modelo de objetos do Kubernetes. Ele representa uma instância de uma aplicação. Cada pod é formado por um container ou por vários deles com forte acoplamento, além de opções que determinam como esses containers são executados. É possível conectar o armazenamento persistente aos pods para executar aplicações stateful.

Mecanismo do ambiente de execução de containers

Para executar os containers, cada nó de computação conta com um mecanismo de ambiente de execução. Um exemplo é o Docker, mas o Kubernetes é compatível com outras que estejam em conformidade com a Open Container Initiative, como o rkt e CRI-O.

kubelet

Todos os nós de computação incluem um kubelet, uma aplicação muito pequena que faz a comunicação com o plano de controle. O kubelet assegura que os containers estejam em execução em um pod. Quando o plano de controle precisa que algo aconteça em um nó, o kubelet realiza a ação.

kube-proxy

O kube-proxy também está incluído em todos os nós de computação. Ele é um proxy que facilita os serviços de rede do Kubernetes. O kube-proxy gerencia as comunicações de rede dentro e fora do cluster, recorrendo à camada de filtragem de pacotes do sistema operacional ou encaminhando o tráfego por conta própria.

O que mais é necessário em um cluster Kubernetes?

Armazenamento persistente

Além de gerenciar os containers que executam a aplicação, o Kubernetes também controlam os dados da aplicação anexados ao cluster. Com o Kubernetes, os usuários podem solicitar recursos de armazenamento sem precisar conhecer os detalhes da infraestrutura subjacente. Os volumes persistentes podem ter um ciclo de vida maior do que os pods, já que são específicos para os clusters.

Registro de containers

As imagens de container usadas pelo Kubernetes ficam armazenadas em um registro, que pode ser configurado por você ou fornecido por terceiros.

Infraestrutura subjacente

Você escolhe o ambiente de execução do Kubernetes. Ele pode ser servidores bare-metal, máquinas virtuais, nuvens privadas, públicas e híbridas. Uma das principais vantagens do Kubernetes é que ele funciona em vários tipos de infraestrutura.

Mas não é tão simples assim

Esta visão geral simplificada da arquitetura do Kubernetes oferece apenas um resumo da tecnologia. Na hora de definir como os componentes vão se comunicar entre si e com a infraestrutura e os recursos externos, você compreenderá os desafios enfrentados para configurar e proteger um cluster do Kubernetes.

O Kubernetes oferece as ferramentas para orquestrar aplicações grandes e complexas implantadas em containers. Mesmo assim, você ainda precisará tomar diversas decisões. É necessário escolher o sistema operacional, o ambiente de execução de containers, as ferramentas de integração e entrega contínuas (CI/CD), os serviços de aplicações, o armazenamento e a maioria dos outros componentes. Há também os trabalhos de gerenciamento de funções, controle de acesso, multilocação e proteção das configurações padrão. Além disso, você terá que decidir se executará o Kubernetes por conta própria ou trabalhará com um provedor que ofereça uma versão compatível.

A flexibilidade do Kubernetes dá a você liberdade de escolha. Ainda que seja complexo de implementar, o Kubernetes oferece a capacidade de executar aplicações containerizadas do jeito que você quiser e de responder às mudanças na organização com muito mais agilidade.

Crie aplicações nativas em nuvem com o Kubernetes

Assista a esta série de webinars para ter uma perspectiva dos especialistas. Isso vai ajudar você a estabelecer uma plataforma de dados no Kubernetes empresarial necessária para criar, executar implantar e modernizar aplicações. 

Por que escolher o Red Hat OpenShift para o Kubernetes?

A Red Hat é uma empresa líder do setor e participa ativamente do desenvolvimento de tecnologias de containers open source, incluindo o Kubernetes. Criamos ferramentas essenciais para proteger, simplificar e atualizar automaticamente as infraestruturas de container. 

O Red Hat® OpenShift® é uma distribuição Kubernetes de nível empresarial. Ele fornece às equipes uma plataforma única e integrada para DevOps. Com o Red Hat OpenShift, os desenvolvedores podem escolher as linguagens, os frameworks, middlewares e bancos de dados que quiserem. Eles também podem criar e implantar a automação por meio da CI/CD para alavancar a produtividade. Também oferecemos uma plataforma de serviços de armazenamento e dados projetada para containers: o Red Hat OpenShift Container Storage.