Containers & Kubernetes

Zandra Monteiro
3 min readApr 10, 2021

Comecei um curso incrível na Red Hat Academy sobre containers e Kubernetes. A primeira vez que tive contato com essa ferramenta foi no estágio e fiquei curiosa para saber mais sobre o assunto. Foi aí que chegou a oportunidade do curso e eu soube que era o momento certo. Então, resolvi postar um pouco do que estou aprendendo.

Primeiro olhar

Os aplicativos geralmente dependem de outras ferramentas fornecidas pelo ambiente de tempo de execução, tais como bibliotecas e arquivos de configuração. Tais dependências normalmente são instaladas como parte de um host físico ou uma máquina virtual e acabam por se emaranhar com as do ambiente. Dessa forma, o aplicativo pode sofrer danos quando o sistema operacional (SO) de base for atualizado ou corrigido, por exemplo.

Uma das formas de evitar este dano é que a pessoa desenvolvedora realize testes para garantir que as modificações no SO não irão afetar o aplicativo em execução no host, além de interroper o aplicativo antes da atualização das dependências. Por outro lado, essas medidas geram tempo de inatividade e tornam a manutenção complexa.

Diante deste cenário, os containers se tornam uma boa solução, uma vez que isolam os processos do restante do sistema. Além de exigirem menos recursos de hardware e terem inicialização e encerramento rápidos, fornecem seguraça, armazenamento e isolamento de rede e dos recursos de tempo de execução (incluindo as bibliotecas). Dessa forma, os containers aumentam a flexibilidade e a reusabilidade dos aplicativos de host.

Porém, uma desvantagem está relacionada aos aplicativos que acessam informação de hardware de baixo nível. Quando um aplicativo utiliza, por exemplo, memória ou dispositivos, o uso de containers pode não ser o mais ideal.

Open Container Initiative (OCI)

A OCI é um projeto que busca provomer o estabelecimento de especificações e de padrões sobre containers, para que, quando uma imagem for criada usando o padrão OCI, ela possa ser executada em qualquer mecanismo que esteja em conformidade com o OCI. O famoso Docker é um mecanismo de gerenciamento e execução de containers individuais.

Conceitos

Assim como máquinas virtuais são criadas a partir de templates, os containers são criados a partir de uma imagem. A construção do container acontece de forma declarativa, através da criação de um dockerfile ou containerfile, baseada em uma imagem. A imagem tem todas as dependências necessárias para executar um processo.

A imagem do container é composta por várias camadas (layers), que são montadas pelo container runtime e cada uma tem seu hash. Isso facilita, por exemplo, a troca de informações entre os containers, pois apenas as camadas que não estão naquele container serão baixadas pelo runtime. As imagens precisam estar disponíveis localmente e ficam armazenadas em repositórios.

Containers são efêmeros. Quando são destruídos, todos os dados são destruídos também. O banco de dados precisa de persistência e isso pode ser um problema. Se o banco de dados é crítico, é interessante que em produção não esteja um container.

Sobre os Namespaces é relevante saber que isolam recursos de sistema específicos, tornando-os visíveis apenas para seus membros. Já os Grupos de Controle são os mecanismos que a runtime impõe para limitar os recursos a serem utilizados pelo processo do container.

Kubernetes

O Kubernetes é um serviço de orquestração que simplifica a implantação, o gerenciamento e o dimensionamento de aplicativos conteinerizados.

Uma das vantagens de seu uso é a facilidade de comunicação entre os serviços, possibilitada pela atribuição de uma única entrada DNS para cada conjunto de containers. Dessa forma, o balanceamento da carga das solicitações leva em consideração a disponibilidade dos pods (o conjunto de um ou mais containers com recursos de armazenamento e endereço de IP que representam um único aplicativo).

Outro ponto positivo é que o usuário pode definir verificações de integridade para monitorar os containers em casos de falha. Além disso, os operadores usam a API do Kubernetes para, através do seu conhecimento do ciclo de vida do aplicativo, atualizar o estado do cluster.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Zandra Monteiro
Zandra Monteiro

Written by Zandra Monteiro

Passionate about programming and solving problems using code! Enjoying this amazing journey of becoming a dev, I’ll share here some of it.

No responses yet

Write a response