Visão geral de como implantar cargas de trabalho

Para implantar e gerenciar aplicativos em contêiner e outras cargas de trabalho no seu cluster do Google Kubernetes Engine, use o sistema do Kubernetes para criar objetos de controlador. Esses objetos representam os aplicativos, daemons e jobs em lote em execução nos clusters.

Para criar esses objetos de controlador, use a API Kubernetes ou a kubectl, uma interface de linha de comando para o Kubernetes instalada pela gcloud. Normalmente, você cria uma representação do objeto de controlador pretendido do Kubernetes como um arquivo de configuração YAML e usa esse arquivo com a API Kubernetes ou a interface de linha de comando kubectl.

Tipos de cargas de trabalho

O Kubernetes oferece diferentes tipos de objetos de controlador que correspondem a diferentes tipos de cargas de trabalho que é possível executar. Certos objetos de controlador são mais adequados para representar tipos específicos de cargas de trabalho. Nas seções a seguir, você verá descrições de alguns tipos comuns de cargas de trabalho e os objetos de controlador do Kubernetes que é possível criar para executá-las no cluster. Veja alguns deles:

  • Aplicativos sem estado
  • Aplicativos com estado
  • jobs em lote
  • Daemons

Aplicativos sem estado

Um aplicativo sem estado não preserva o próprio estado e não salva dados no armazenamento permanente. Todos os dados do usuário e da sessão permanecem com o cliente.

Alguns exemplos de aplicativos sem estado incluem front-ends da Web como o Nginx, servidores da Web como o Apache Tomcat (links em inglês) e outros aplicativos da Web.

É possível criar uma implantação do Kubernetes para implantar um aplicativo sem estado no cluster. Os pods criados por implantações não são exclusivos e não preservam o estado, o que facilita o escalonamento e a atualização de aplicativos sem estado.

Aplicativos com estado

Um aplicativo com estado exige que o estado seja salvo ou permanente. Esses aplicativos usam armazenamento permanente, como volumes permanentes, para salvar dados para uso do servidor ou de outros usuários.

Exemplos de aplicativos com estado incluem bancos de dados como o MongoDB e filas de mensagens como o Apache ZooKeeper (links em inglês).

É possível criar um StatefulSet (em inglês) do Kubernetes para implantar um aplicativo com estado. Os pods criados pelo StatefulSets têm identificadores exclusivos e podem ser atualizados de maneira segura e ordenada.

Jobs em lote

Os jobs em lote representam tarefas finitas, independentes e muitas vezes paralelas que são executadas até a conclusão. Alguns exemplos de jobs em lote incluem tarefas automáticas ou agendadas, como enviar e-mails, renderizar vídeos e executar cálculos exorbitantes.

Crie um job do Kubernetes para executar e gerenciar uma tarefa em lote no cluster. É possível especificar o número de pods que precisam completar as tarefas antes da conclusão do job, bem como o número máximo de pods que precisam ser executados em paralelo.

Daemons

Com os daemons, é possível executar tarefas em segundo plano nos nós atribuídos sem a necessidade de intervenção do usuário. Exemplos de daemons incluem coletores de registros como o Fluentd (em inglês) e serviços de monitoramento.

É possível criar um DaemonSet do Kubernetes para implantar um daemon no cluster. O DaemonSets cria um pod por node, e é possível escolher um nó específico em que o DaemonSet fará a implantação.

Como gerenciar objetos de carga de trabalho

Você pode criar, gerenciar e excluir objetos usando métodos imperativos e declarativos. Nas seções a seguir, descrevemos esses métodos, bem como as ferramentas que é possível usar para empregá-los:

Comandos imperativos

Com os comandos imperativos (em inglês), você cria, visualiza, atualiza e exclui objetos rapidamente com a kubectl. Esses comandos são úteis para tarefas únicas ou para fazer alterações em objetos ativos em um cluster. Os comandos imperativos normalmente são usados para realizar operações em objetos implantados ativos no cluster.

A kubectl apresenta vários comandos orientados por verbo para criar e editar objetos do Kubernetes. Por exemplo:

  • run (em inglês): gera um novo objeto no cluster. A menos que seja especificado de outra forma, run cria um objeto de implantação. run também aceita vários outros geradores (em inglês).
  • expose (em inglês): cria um novo objeto Service para balancear a carga de tráfego em um conjunto de pods rotulados.
  • autoscale (em inglês): cria um novo objeto Autoscaler para realizar o escalonamento horizontal automático em um objeto controller, como uma implantação.

Os comandos imperativos não exigem arquivos de configuração nem uma compreensão profunda do esquema de objeto.

Configuração imperativa de objetos

Com a configuração imperativa de objetos (em inglês), você cria, atualiza e exclui objetos usando arquivos de configuração que contêm definições de objeto totalmente especificadas. É possível armazenar arquivos de configuração de objetos em sistemas de controle de origem e auditar alterações mais facilmente do que com comandos imperativos.

Execute operações kubectl apply, delete e replace (todos em inglês) com arquivos de configuração ou diretórios contendo arquivos de configuração.

Configuração declarativa de objetos

Com a configuração declarativa de objetos, é possível realizar a operação em arquivos de configuração armazenados localmente sem precisar da definição explícita das operações a serem executadas. Em vez disso, as operações são detectadas automaticamente por objeto pela kubectl. Isso é útil se você estiver trabalhando com um diretório de arquivos de configuração com muitas operações diferentes. O gerenciamento declarativo de objetos exige uma compreensão profunda dos arquivos de configuração e esquemas de objetos.

Para criar e atualizar objetos declarativamente, execute kubectl apply (em inglês). apply lê todo o objeto ativo e calcula e combina as diferenças enviando solicitações de patch ao servidor da API para atualizar objetos.

Console

Depois de implantar uma carga de trabalho usando a kubectl ou a API, use o menu das cargas de trabalho do GKE no Console do GCP para inspecionar, gerenciar e editar cargas de trabalho em execução nos clusters.

O menu oferece estes recursos:

  • Use o editor de texto baseado em YAML para editar objetos ativos do seu navegador da Web.
  • Veja informações detalhadas sobre objetos, incluindo histórico de revisão, eventos e atividades recentes e os respectivos pods gerenciados.
  • Escalone implantações, jobs e StatefulSets com facilidade.
  • Faça o escalonamento automático, acione atualizações graduais e escalone implantações manualmente no menu Ações.
  • Use o Cloud Shell para inspecionar, editar e excluir qualquer objeto.

API

Para criar e gerenciar cargas de trabalho de maneira programática, use a API REST do GKE e a API Kubernetes (em inglês) com as bibliotecas de cliente do Google Cloud.

Arquivos de configuração

Quando você implanta uma carga de trabalho usando qualquer um dos métodos descritos anteriormente, o GKE adiciona um arquivo de configuração ao cluster que representa o objeto.

A configuração ativa de um objeto pode ser diferente do arquivo local. O YAML costuma ser usado para criar e representar objetos do Kubernetes, mas também é possível usar o JSON (links em inglês).

Para saber mais sobre as especificações de objetos do Kubernetes, os status e a API Kubernetes, consulte Noções básicas de objetos do Kubernetes e a referência da API Kubernetes (ambos em inglês).

Como inspecionar configurações ativas

Console

Para inspecionar a configuração ativa de um objeto implantado, execute as etapas a seguir:

  1. Acesse o menu "Cargas de trabalho" do Google Kubernetes Engine no Console do GCP.

    Acessar o menu "Cargas de trabalho"

  2. Selecione a carga de trabalho desejada.

  3. Clique em YAML.

gcloud

Para inspecionar a configuração ativa de um objeto implantado, execute o comando abaixo:

kubectl get [OBJECT_TYPE] [OBJECT_NAME] -o yaml

[OBJECT_TYPE] pode ser deployment, statefulset, job ou outro tipo de objeto. Por exemplo:

kubectl get deployment my-stateless-app -o yaml

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine