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:
kubectl
(em inglês), a ferramenta de linha de comando do Kubernetes instalada com o SDK do Cloud- O menu "Cargas de trabalho" do GKE no Console do GCP
- A API REST do GKE e a API Kubernetes (links em inglês).
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:
Acesse o menu "Cargas de trabalho" do Google Kubernetes Engine no Console do GCP.
Selecione a carga de trabalho desejada.
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