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:

https://github.com/toticavalcanti

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado, até a próxima e bons estudos. ;)