Em um cluster Kubernetes, a carga de trabalho é uma instância de aplicação ou serviço em execução no cluster. Implante, dimensione, atualize e restaure cargas de trabalho para manter a estabilidade dos pods e a continuidade do serviço. Este tópico descreve os tipos comuns de carga de trabalho, incluindo Deployments, StatefulSets, DaemonSets, Jobs e CronJobs.
Pod
O pod é a menor unidade implantável no Kubernetes e encapsula um ou mais containers com armazenamento compartilhado (volumes), rede e configuração. Raramente se criam pods diretamente; utilize controladores como Deployments e StatefulSets para gerenciá-los.
Deployments e StatefulSets
Deployment
Originalmente, o Kubernetes usava ReplicaSets para definir a contagem de réplicas, seletores de rótulos e modelos de pod. Atualmente, os Deployments gerenciam os ReplicaSets, que por sua vez gerenciam os pods e adicionam controle aprimorado.
Utilize Deployments para aplicações que não exigem persistência de dados nem operações ordenadas, como servidores web e microsserviços.
|
Cenário |
Descrição |
|
Serviços web stateless |
Os serviços web de frontend dimensionam dinamicamente conforme a flutuação do tráfego. Os Deployments oferecem suporte a dimensionamento horizontal, atualizações e rollbacks. |
|
Serviços de arquitetura de microsserviços |
Em um sistema de microsserviços, implante e gerencie cada serviço independentemente com Deployments. |
StatefulSet
Os pods de um Deployment são independentes e stateless, mas algumas aplicações requerem estado e dependências. Por exemplo, em um banco de dados primário-réplica, os pods mantêm estado e dependem uns dos outros. Use um StatefulSet para esses pods com estado e interconectados.
Use StatefulSets para aplicações que necessitam de armazenamento persistente e implantação ordenada de instâncias, como bancos de dados e sistemas de armazenamento distribuído.
|
Cenário |
Descrição |
|
Bancos de dados com estado |
Bancos de dados com estado exigem armazenamento persistente e identidade de rede estável após o reagendamento de pods. Por exemplo, cada instância do MySQL mantém dados e configurações entre reinicializações. |
|
Serviços de fila de mensagens distribuídas |
Sistemas de mensagens distribuídas dependem de estado ordenado e logs persistentes em cada nó. O Apache Kafka, por exemplo, exige que cada broker mantenha a consistência dos dados e armazene logs em um volume persistente para evitar perda de dados. |
Diferenças entre Deployments e StatefulSets
Escolha o tipo de carga de trabalho com base nas diferenças entre Deployment e StatefulSet.
|
Item |
Deployment |
StatefulSet |
|
Casos de uso |
Aplicações stateless, como servidores web e serviços de API, que precisam de dimensionamento rápido e atualizações contínuas. |
Aplicações com estado, como bancos de dados e sistemas de arquivos distribuídos, que exigem armazenamento persistente estável e implantação ordenada. |
|
Armazenamento persistente |
Todos os pods de réplica compartilham uma única persistent volume claim (PVC). Ao serem reagendados ou atualizados, os pods reconectam-se à mesma PVC e aos mesmos dados. |
Cada pod possui sua própria persistent volume claim para garantir persistência e consistência dos dados. O armazenamento persiste entre reinicializações e reagendamentos de pods. |
|
Identificador de rede |
Os pods não possuem identificadores estáveis. Nomes e endereços IP mudam sempre que um pod é recriado. |
Cada pod tem um identificador estável no formato |
|
Estratégia de atualização |
|
|
|
Descoberta de serviço |
Um Service fornece descoberta de serviço e balanceia o tráfego de entrada para os pods. Consulte Gerenciamento de serviços. |
Cada pod possui um nome DNS único e estável. Um headless service gerenciado por StatefulSet permite descoberta estável e acesso direto ao pod. |
DaemonSet
Um DaemonSet executa uma réplica de pod em cada nó do cluster para serviços de segundo plano, como coleta de logs, monitoramento e plug-ins de rede. Quando nós entram ou saem do cluster, o DaemonSet cria ou exclui o pod correspondente.
Use um DaemonSet para executar o mesmo processo daemon em cada nó do cluster.
|
Cenário |
Descrição |
|
Coleta de logs |
DaemonSets são adequados para ferramentas de coleta de logs, como o componente complemento de coleta de logs em clusters ACK em clusters ACK, que executam em cada nó para coletar arquivos de log e encaminhá-los a um sistema centralizado de gerenciamento de logs. |
|
Agente de monitoramento |
Implante um agente de monitoramento, como Prometheus Node Exporter ou Datadog Agent, em cada nó para coletar métricas de recursos e monitorar o status do nó em tempo real. |
Jobs e CronJobs
Jobs e CronJobs executam tarefas únicas e agendadas para cargas de trabalho que não rodam continuamente, como processamento em lote e tarefas de dados.
Um Job executa uma tarefa até a conclusão e encerra seus pods ao terminar. Utilize Jobs para tarefas pontuais, como processamento de dados e backups.
Um CronJob agenda Jobs usando uma expressão cron com campos de minuto, hora, dia, mês e dia da semana para tarefas periódicas, como backups de banco de dados e limpeza de logs.
Gerenciar objetos de carga de trabalho
Gerencie cargas de trabalho no ACK por meio do console, kubectl ou da API do Kubernetes para implantar, monitorar e dimensionar serviços de aplicação.
Console
Utilize o console do ACK para criar, gerenciar e monitorar cargas de trabalho visualmente. Os tópicos a seguir abordam o gerenciamento via console para cada tipo de carga de trabalho.
CLI
Obter o arquivo kubeconfig de um cluster e usar kubectl para conectar-se ao cluster para implantar aplicações, gerenciar recursos e monitorar o cluster.
API do Kubernetes
Usar a API do Kubernetes para criar, atualizar, excluir e monitorar cargas de trabalho.
FAQ
Consulte o FAQ sobre cargas de trabalho para solucionar problemas relacionados a cargas de trabalho.
Referências
Para dimensionar pods automaticamente, consulte Auto Scaling.
Sobre métodos de agendamento de pods, veja Agendamento.
Para descoberta de serviço e balanceamento de carga, consulte Gerenciamento de serviços.
Para rotear tráfego externo para serviços dentro do cluster, consulte Gerenciamento de Ingress.
Para persistir dados de pods, consulte Conceitos básicos de armazenamento.
Para baixar imagens de container sem segredo em um cluster ACK, consulte Fazer pull de imagens de uma instância na mesma conta.
Para acelerar o download de imagens internacionais em clusters ACK, consulte Acelerar pulls de imagens de container entre regiões com Global Accelerator (GA).