Jump to section

Introdução aos padrões do Kubernetes

Copiar URL

Um padrão descreve uma solução reproduzível para um problema. Os padrões para Kubernetes são padrões de design para aplicações e serviços baseados em container.  

Kubernetes pode ajudar os desenvolvedores a escrever aplicações nativas em nuvem, além de fornecer ferramentas e uma biblioteca de interfaces de programação de aplicações (APIs). 

No entanto, o Kubernetes não fornece aos desenvolvedores e arquitetos diretrizes de como usá-lo para criar um sistema completo que atenda às necessidades e aos objetivos dos negócios. 

Padrões são uma maneira de reutilizar arquiteturas. Em vez de criar a arquitetura do zero, você pode usar padrões para Kubernetes existentes, garantindo que tudo funcione da maneira correta. 

Quando se trata de fornecer serviços empresariais importantes usando o Kubernetes, aprender por tentativa e erro é muito demorado e pode causar problemas, como tempo de inatividade e interrupções. 

Pense no padrão como uma referência: ele mostra como resolver diversos problemas similares, em vez de apenas fornecer instruções passo a passo para resolver um problema específico.

Ao usar um padrão, você pode obter resultados um pouco diferentes. O objetivo não é fornecer uma solução idêntica. Seu sistema pode ser diferente do sistema de outra pessoa que usou o mesmo padrão, mas ambos terão características em comum. 

Com os padrões para Kubernetes, os desenvolvedores podem criar aplicações nativas em nuvem usando Kubernetes como plataforma de ambiente de execução.

Os padrões são ferramentas necessárias para os desenvolvedores do Kubernetes e mostram como criar o sistema.

  • Os padrões fundamentais abordam os principais conceitos do Kubernetes. Eles consistem nas práticas e nos princípios básicos para criar aplicações nativas em nuvem baseadas em container. 
  • Os padrões comportamentais descrevem os padrões que são usados com os padrões fundamentais e adicionam granularidade aos conceitos para o gerenciamento de vários tipos de interações de container e plataforma. 
  • Os padrões estruturais se relacionam com a organização de containers em um pod do Kubernetes. 
  • Os padrões de configuração são usados para as diversas formas de gerenciamento das configurações da aplicação no Kubernetes. Eles incluem as etapas específicas para conectar aplicações a suas configurações. 
  • Os padrões avançados incluem conceitos avançados, por exemplo, como a própria plataforma pode ser expandida ou como criar imagens de container diretamente no cluster.

Padrões de demandas previsíveis

Os padrões de demandas previsíveis são padrões fundamentais do Kubernetes. Esse tipo de padrão garante que suas aplicações estejam de acordo com os princípios fundamentais para aplicações em containers e prontos para serem automatizados com o Kubernetes. 

Eles explicam por que cada container precisa declarar os requisitos de recursos e as dependências de ambiente de execução da aplicação. Definir esses requisitos permite que o Kubernetes escolha o local ideal para implantar a aplicação no cluster

Usando esses padrões, é possível definir, por exemplo, dependências de ambiente de execução, perfis de recursos, prioridade dos pods e recursos do projeto.

Exemplo: perfis de recursos

Você precisará especificar os requisitos de recursos de um container, como CPU e memória, na forma de uma solicitação e um limite. A solicitação se refere à quantidade mínima de recursos necessários, e o limite, à quantidade máxima de recursos que um container pode consumir. 

A quantidade da solicitação é usada pelo agendador ao atribuir pods a nós. O agendador só atribuirá um pod a um nó com capacidade suficiente para acomodá-lo.  

Se os requisitos de recursos não forem definidos, a prioridade do container será considerada baixa e ele será eliminado primeiro, caso o nó fique sem recursos disponíveis.

Padrões de configuração

Toda aplicação exige configurações. Armazená-las no código-fonte é uma opção fácil, mas não oferece a flexibilidade de adaptar as configurações sem recriar a imagem da aplicação. Já as configurações externas permitem que você faça adaptações com base no ambiente.

Os padrões de configuração ajudam você a personalizar e adaptar suas aplicações com configurações externas para diferentes ambientes de desenvolvimento, integração e produção. 

Exemplo: configuração EnVar

O padrão de configuração EnVar funciona melhor com pequenos grupos de variáveis de configuração, em que variáveis de ambiente com suporte universal podem ser usadas para externalizar as configurações. 

Isso permite fazer alterações mesmo depois que a aplicação é compilada, diferentemente das configurações codificadas, que exigem a recompilação da aplicação. 

Usar variáveis de ambiente para externalizar configurações é uma boa opção porque qualquer sistema operacional é capaz de definir essas variáveis, e elas são acessíveis por qualquer linguagem de programação. 

Com essas variáveis, os valores padrão codificados são normalmente definidos durante a compilação e sobrescritos no ambiente de execução.

No Kubernetes, é possível definir as variáveis diretamente na especificação de pod de um controlador, como um conjunto de réplica ou implantação. Você pode anexar valores diretamente a variáveis de ambiente, que podem ser gerenciadas separadamente da definição do pod.

Além disso, você pode usar uma delegação para Secrets (no caso de dados confidenciais) e para o ConfigMaps (para configurações não confidenciais) do Kubernetes.

Padrões avançados

Esses padrões incluem tópicos complexos e as implementações de padrões mais recentes. São exemplos desse tipo de padrão do Kubernetes: controlador, operador, escala flexível e compilador de imagens.

Exemplo: escala flexível 

O padrão de escala flexível é usado para escalar uma aplicação horizontalmente, adaptando o número de réplicas do pod, e verticalmente, adaptando os requisitos de recursos para pods, além de escalar o próprio cluster mudando o número de nós.

Embora seja possível escalar manualmente, o padrão de escala flexível permite que o Kubernetes faça isso automaticamente com base na carga. 

Com o Kubernetes, você pode mudar os recursos de um container, o número desejado de réplicas para um serviço ou o número de nós no cluster. Além disso, é possível monitorar eventos relativos à carga externa e capacidade, analisar o estado do container e escalar de acordo com o desempenho desejado. 

A escala automática horizontal de pods permite que você defina uma capacidade não fixa para a aplicação, porém suficiente para gerenciar uma carga variável. Um escalador horizontal automático de pods é usado para escalar pods. 

Para usar o escalador horizontal automático de pods, é preciso ativar o servidor de métricas, um agregador de dados de utilização de recursos, em todo o cluster, além de definir limites para os recursos da CPU. Para criar uma definição para o escalador, use a linha de comando. 

O controlador do escalador horizontal automático de pods recupera continuamente métricas sobre os pods relativas à escala com base na definição anterior feita na linha de comando. 

Ele também calcula o número necessário de réplicas com base no valor atual e no valor desejado e altera as réplicas declaradas para manter o novo estado desejado.

O Red Hat® OpenShift® é uma plataforma Kubernetes para empresas. Com ele, os desenvolvedores têm ambientes de autosserviço para criação e recursos de automatização das operações de todo o stack em qualquer infraestrutura.

O Red Hat OpenShift vem com todos os elementos extras que tornam o Kubernetes potente e viável para as empresas, incluindo componentes de registro, rede, telemetria, segurança, automação e serviços.

Com ele, os desenvolvedores da sua empresa poderão criar novas aplicações em containers, hospedá-las e implantá-las na nuvem. Tudo isso com a escalabilidade, o controle e a orquestração necessários para transformar boas ideias em negócios valiosos de forma rápida e fácil.

Leitura recomendada

ARTIGO

Stateful x stateless

Para determinar se algo é stateful ou stateless, basta considerar o tempo em que seu estado de interação é registrado e como essas informações precisam ser armazenadas.

ARTIGO

O que é Quarkus?

Quarkus é um stack Java nativo em Kubernetes que foi desenvolvido para máquinas virtuais Java (JVMs) e compilação nativa, otimizando essa linguagem especificamente para containers.

ARTIGO

O que é serverless?

Serverless é um modelo de desenvolvimento nativo em nuvem para criação e execução de aplicações sem o gerenciamento de servidores.

Leia mais sobre aplicações nativas em nuvem

Soluções Red Hat

Uma plataforma de aplicações para empresas que oferece serviços testados para lançar aplicações na infraestrutura de sua escolha.

 

Conteúdo adicional

Caso de sucesso

Banco Galicia, da Argentina, integra novos clientes corporativos em minutos com sua plataforma de NLP inteligente.

VÍDEO - THE SOURCE TV

O futuro da nuvem: a evolução das soluções cloud

Aprenda mais sobre a evolução e o futuro das soluções em nuvem com os especialistas da Red Hat

E-book

O caminho para a adoção de aplicações nativas em nuvem

Caso de sucesso

KPMG

A KPMG melhora os resultados dos serviços estaduais ao cidadão por meio de uma moderna plataforma de integração de sistemas.

Treinamentos Red Hat

Treinamento gratuito

Developing Cloud-Native Applications with Microservices Architectures