Aula 02 - Kubernates - Arquitetura de Baixo Nível
Para rodar o Kubernates é preciso do
containerD, não necessariamente do Docker completo instalado.
Para começar, eu vou rodar localmente usando o
Minikube.
Para instalação no Windows, é só seguir o passo a passo desse vídeo avulso do Código Fluente, segue o link:
https://www.youtube.com/watch?v=Tr3l-cRIlmI
Para instalar no
linux ou
mac, o processo é simples, é só seguir as instruções informadas no site do
Minikube.
Arquitetura
Container Engine e Container Runtime
A diferença entre
container engine e
container runtime é sutil, mas importante.
Vamos esclarecer esses conceitos:
Container Engine: Um
container engine é uma plataforma completa que inclui um ou mais componentes responsáveis por criar, executar e gerenciar contêineres.
Ele é uma solução completa que pode conter várias ferramentas e serviços relacionados.
O
container engine é responsável por fornecer uma interface de usuário e APIs para criar, iniciar e parar contêineres, além de gerenciar o ciclo de vida dos contêineres.
Geralmente, um container engine também inclui um container runtime como um dos seus componentes essenciais.
Exemplos de container engine: Docker e Podman
Container Runtime: O
container runtime é um componente específico dentro do container engine responsável por executar os contêineres em um sistema operacional hospedeiro.
Ele é responsável por criar e gerenciar a execução dos contêineres, garantindo que eles compartilhem recursos de forma isolada e segura.
O
container runtime lida com a criação de
namespaces,
cgroups e outros mecanismos de isolamento para garantir que os contêineres sejam isolados uns dos outros e do sistema operacional hospedeiro.
Exemplos de container runtime: containerd, CRI-O e runc
Resumindo, o
container engine é uma solução completa que engloba todas as ferramentas e componentes necessários para criar e gerenciar contêineres, enquanto o container runtime é um
componente específico dentro do
container engine que lida com a execução e gerenciamento efetivo dos contêineres no sistema operacional hospedeiro.
O
container runtime é uma parte essencial de um
container engine, pois é responsável pela execução dos contêineres em si, garantindo o isolamento e a segurança dos processos em execução.
OCI (Open Container Initiative)
Porque o
Kubernates consegue usar toda essa variedade de
Conteiners Engines e
Runtime?
Por causa do padrão estabelecido pela
OCI e que todos seguem, é um padrão que vai além do
Kubernates, outros orquestradores de containers também usam.
Tipos de Containers Runtime
Baixo Nível e
Alto Nível.
Baixo Nível (
RunC, por exemplo, criado pela OCI) e o de Alto Nível (
ContainerD, por exemplo).
O
RunC por ser de baixo nível consegue falar direto com o kernel
Outra opção de
container runtime de baixo nível é o
crun.
Como funciona a pilha do Docker
O
Docker Engine vem com várias ferramentas para facilitar a criação e execução de contêineres como desenvolvedor ou administrador de sistemas.
É basicamente uma interface de linha de comando (CLI) para trabalhar com contêineres.
Mas o comando docker é apenas uma peça do quebra-cabeça.
Na verdade, ele chama algumas ferramentas de baixo nível para fazer o trabalho pesado:
No mundo do ecossistema de contêineres, existem muitas tecnologias empolgantes, jargões e concorrência entre grandes empresas.
No entanto, de tempos em tempos, essas empresas conseguem chegar a um acordo, estabelecendo padrões que tornam o ecossistema mais interoperável.
Essa cooperação é como um contrato que permite que diferentes plataformas e sistemas operacionais executem software de forma mais flexível, sem depender excessivamente de uma única empresa ou projeto.
Dois dos principais padrões relacionados a contêineres são:
Open Container Initiative (OCI): Esse conjunto de padrões define as especificações para o formato de imagem, tempo de execução e distribuição de contêineres.
Ele visa garantir a compatibilidade entre as diferentes ferramentas e plataformas de contêineres.
Container Runtime Interface (CRI) no Kubernetes: Essa API possibilita o uso de diferentes
containers runtime no
Kubernetes.
Isso permite a flexibilidade de escolher o
container runtime mais adequado para diferentes cenários, facilitando a integração e o gerenciamento dos contêineres no ambiente
Kubernetes.
Essa ilustração dá uma visão geral de como
Docker,
Kubernetes,
CRI,
OCI,
containerd e
runc se encaixam neste ecossistema:
O
Docker é uma ferramenta que ajuda a criar, executar e gerenciar contêineres.
Existem padrões abertos para garantir que diferentes ferramentas de contêineres funcionem bem juntos.
No
Kubernetes, você pode escolher qual ferramenta de contêiner deseja usar.
Duas opções populares são o
containerd e o
CRI-O.
O
containerd é uma ferramenta criada pelo
Docker que cuida das tarefas de alto nível, como baixar imagens de contêineres e gerenciar o armazenamento.
O
CRI-O é uma alternativa ao
containerd, projetada especificamente para funcionar bem com o
Kubernetes.
Ele também faz as mesmas tarefas que o
containerd, mas pode ser preferido em certos cenários.
Ambos implementam padrões comuns, permitindo que o
Kubernetes trabalhe facilmente com qualquer uma dessas ferramentas.
Resumindo, no mundo dos contêineres, temos diferentes ferramentas para escolher.
No
Kubernetes, você pode usar o
containerd ou o
CRI-O para criar e gerenciar seus contêineres de maneira eficiente e flexível.
Na próxima aula veremos a
arquitetura de
alto nível do
Kubernates, ou seja, seus componentes:
Kubelet,
Pod,
ReplicaSet,
Deployment,
Services ...
Por essa aula é só, nos vemos na próxima, valeu \o/.
Meu github:
Novamente deixo meus link de afiliados:
Obrigado, até a próxima e bons estudos. ;)