Visão geral
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.
Recursos da Red Hat
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. O etcd, distribuído e tolerante a falhas, 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 controla 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 conteinerizadas 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 Data Foundation.
Blog da Red Hat
Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.