Visão geral de como implantar cargas de trabalho

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

É possível criar esses objetos de controlador com a API Kubernetes ou o kubectl, uma interface da linha de comando para Kubernetes instalada pelo gcloud. Normalmente, você cria uma representação do seu objeto de controlador do Kubernetes desejado como um arquivo de configuração YAML e, em seguida, 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, descrevemos alguns tipos comuns de cargas de trabalho e os objetos de controlador do Kubernetes que é possível criar para executar 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 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 e outros aplicativos da Web.

Você pode 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.

Você pode criar um StatefulSet 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.

Você pode criar 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 nodes atribuídos sem a necessidade de intervenção do usuário. Exemplos de daemons incluem coletores de registros como Fluentd e serviços de monitoramento.

Você pode 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

Comandos imperativos permitem que você crie, visualize, atualize e exclua objetos com o 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.

O kubectl conta com vários comandos orientados por verbos para criar e editar objetos do Kubernetes. Por exemplo:

  • run: gera um novo objeto no cluster. Salvo especificação em contrário, run cria um objeto de implantação. run também é compatível com vários outros geradores.
  • expose: cria um novo objeto de serviço para balancear a carga do tráfego em um conjunto de pods com rótulos.
  • autoscale: cria um novo objeto do autodimensionador para dimensionar horizontalmente um objeto de controlador, como uma implantação.

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

Configuração imperativa de objetos

Com a configuração imperativa de objetos, 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 de kubectl apply, delete e replace com arquivos de configuração ou diretórios contendo arquivos de configuração.

Configuração declarativa de objetos

A configuração declarativa de objetos opera em arquivos de configuração armazenados localmente, mas não exige definição explícita das operações a serem executadas. Em vez disso, as operações são detectadas automaticamente por objeto pelo 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 esquemas de objetos e arquivos de configuração.

Execute o kubectl apply para criar e atualizar objetos declarativamente. apply faz a leitura integral do objeto ativo, calculando as diferenças e, em seguida, mesclando-as ao enviar solicitações de patch para o servidor de API.

Console

Depois da implantação com o kubectl ou a API, use o menu 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 escalonamento automático, acione atualizações contínuas e escalone implantações manualmente no menu Ações.
  • Use o Cloud Shell para inspecionar, editar e excluir qualquer objeto.

API

É possível usar a API REST do GKE e a API Kubernetes com as bibliotecas de cliente do Google Cloud para criar e gerenciar cargas de trabalho programaticamente.

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 é mais utilizado para criar e representar objetos do Kubernetes. Você também pode usar o JSON.

Para saber mais sobre as especificações dos 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.

Como inspecionar configurações em tempo real

Console

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

  1. Visite 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 em tempo real de um objeto implantado, execute o comando a seguir:

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

Próximas etapas

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

Enviar comentários sobre…

Documentação do Kubernetes Engine