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.

Leia o ebook "Introdução aos padrões do Kubernetes"

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.

Recursos da Red Hat

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.

Explore mais padrões para Kubernetes

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.

Saiba mais sobre o Red Hat OpenShiftExperimente o Red Hat OpenShift
Hub

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.

Teste as soluções da Red Hat

Você sabia que a Red Hat oferece versões de teste gratuitas de suas soluções? Aproveite e obtenha experiência prática, prepare-se para uma certificação da Red Hat ou avalie na prática se a solução é adequada para ao caso de uso.

Leia mais

What is the Kubernetes Java client?

The Kubernetes Java client is a client library that enables the use of the Java programming language to interface with Kubernetes.

Kubernetes na AWS: comparação entre K8s autogerenciado e plataforma de aplicações gerenciada

Conheça as vantagens de usar o Kubernetes (K8s) na AWS e entenda as diferenças entre o Kubernetes autogerenciado e uma plataforma de aplicações gerenciada.

O que é hosted control plane?

Hosted control plane refere-se ao plano de gerenciamento desacoplado que permite o controle e gerenciamento consolidados dos principais componentes do plano de controle.

Containers: leitura recomendada

Artigos relacionados