Esta página apresenta as práticas recomendadas para criar e otimizar plataformas de processamento em lote com o Google Kubernetes Engine (GKE), incluindo práticas recomendadas para:
- Arquitetura
- Gestão de trabalhos
- Multitenancy
- Segurança
- A adicionar à fila
- Armazenamento
- Desempenho
- Relação custo-eficácia
- Monitorização
O GKE oferece uma estrutura poderosa para orquestrar cargas de trabalho em lote, como o processamento de dados, a formação de modelos de aprendizagem automática, a execução de simulações científicas e outras cargas de trabalho de computação de alto desempenho.
Estas práticas recomendadas destinam-se a administradores de plataformas, arquitetos de nuvem e profissionais de operações interessados na implementação de cargas de trabalho em lote no GKE. A arquitetura de referência: plataforma de processamento em lote no GKE apresenta muitas das práticas recomendadas abordadas neste guia e pode ser implementada no seu próprio Google Cloud projeto.
Como funcionam as cargas de trabalho em lote
Uma carga de trabalho em lote é um grupo de tarefas que são executadas até à conclusão sem intervenção do utilizador. Para definir tarefas, usa o recurso Jobs do Kubernetes. Uma plataforma de processamento em lote recebe as tarefas e coloca-as em fila pela ordem de receção. A fila na plataforma de processamento em lote aplica a lógica de processamento, como prioridade, quota e recursos atribuíveis. Ao colocar em fila e personalizar os parâmetros de processamento em lote, o Kubernetes permite-lhe otimizar a utilização dos recursos disponíveis, minimizar o tempo de inatividade para tarefas agendadas e maximizar a poupança de custos. O diagrama seguinte mostra os componentes do GKE que podem fazer parte de uma plataforma de processamento em lote.
Gestão de plataformas em lote
Tradicionalmente, as plataformas de processamento em lote têm dois perfis de utilizador principais: programadores e administradores da plataforma:
- Um programador envia uma tarefa que especifica o programa, os dados a serem processados e os requisitos da tarefa. Em seguida, o programador recebe a confirmação do envio da tarefa e um identificador exclusivo. Quando a tarefa estiver concluída, o programador recebe uma notificação juntamente com qualquer resultado da tarefa.
- Um administrador da plataforma gere e fornece uma plataforma de processamento em lote eficiente e fiável aos programadores.
Uma plataforma de processamento em lote tem de cumprir os seguintes requisitos:
- Os recursos da plataforma são aprovisionados corretamente para garantir que os trabalhos são executados com pouca ou nenhuma intervenção do utilizador.
- Os recursos da plataforma estão configurados de acordo com as práticas recomendadas de segurança e observabilidade da organização.
- Os recursos da plataforma são usados da forma mais eficiente possível. Em caso de concorrência de recursos, o trabalho mais importante é feito primeiro.
Prepare a arquitetura da plataforma de processamento em lote no GKE
Um ambiente do GKE consiste em nós, que são máquinas virtuais (VMs) do Compute Engine, agrupadas para formar um cluster.
A tabela seguinte lista as principais recomendações ao planear e criar a arquitetura da plataforma de processamento em lote:
Recomendação | Recursos | |
---|---|---|
Selecione um modo de funcionamento do GKE |
O GKE tem os seguintes modos de funcionamento disponíveis:
Veja a comparação geral entre o modo de condução autónoma e o modo padrão. |
|
Escolha o tipo de máquina para os seus nós |
O GKE suporta as seguintes séries de VMs do Compute Engine:
Cada série de máquinas está associada a uma ou mais plataformas de CPU, como processadores Arm e processadores x86 da Intel e AMD. Saiba mais sobre as opções atualmente disponíveis para a sua carga de trabalho. |
|
Use aceleradores de hardware para os seus nós |
Também pode usar aceleradores de hardware, como unidades de processamento gráfico (GPUs) e Tensor Processing Units (TPUs) no GKE. Considere a estratégia de partilha de tempo da GPU, que permite que vários contentores partilhem tempo na mesma GPU física. Esta abordagem é útil para cargas de trabalho de GPU homogéneas e com picos com poucos pedidos. GPUs de várias instâncias para particionar GPUs e partilhar um único recurso de GPU em vários contentores em simultâneo.
|
|
Ative o redimensionador automático de clusters em clusters Standard | O GKE redimensiona automaticamente o número de nós num determinado conjunto de nós com base nas exigências das suas cargas de trabalho. Não precisa de adicionar nem remover manualmente nós ou aprovisionar em excesso os seus conjuntos de nós. Em alternativa, especifica apenas um tamanho mínimo e máximo para o conjunto de nós. Recomendamos que defina o autoscaler de clusters com a seguinte configuração:
Com os clusters do Autopilot, não tem de se preocupar com o aprovisionamento de nós nem com a gestão de conjuntos de nós, uma vez que os conjuntos de nós são aprovisionados automaticamente através do aprovisionamento automático de nós e são dimensionados automaticamente para satisfazer os requisitos das suas cargas de trabalho. |
|
Inscreva o seu cluster num canal de lançamento | O GKE pode gerir automaticamente a versão e as atualizações do cluster. Com base no seu modelo de adoção de lançamentos, pode inscrever o cluster nos canais disponíveis do GKE.
Para saber mais, consulte o artigo Como escolher o melhor canal de lançamento para os seus clusters | |
Defina um âmbito de manutenção a excluir para o seu cluster | Com uma janela de exclusão do âmbito da atualização definida, o GKE respeita o facto de as cargas de trabalho em lote de longa duração não serem interrompidas para manutenção até à conclusão.
Para saber mais, consulte o artigo Âmbito da manutenção a excluir. |
Faça a gestão do ciclo de vida do trabalho
No Kubernetes, executa as suas cargas de trabalho num conjunto de pods. Os pods são grupos de um ou vários contentores com recursos de armazenamento e de rede partilhados. Os pods são definidos por uma especificação do Kubernetes.
Uma tarefa cria um ou mais pods e tenta executá-los continuamente até que um número especificado de pods seja terminado com êxito. À medida que os pods são concluídos, o trabalho monitoriza as conclusões bem-sucedidas. Quando é alcançado um número especificado de conclusões bem-sucedidas, a tarefa é concluída.
A tabela seguinte lista as principais recomendações para a conceção e gestão de Empregos:
Recomendação | Recursos |
---|---|
Selecione o modo de conclusão do trabalho | Especifique o modo de conclusão como Indexed . Esta configuração é útil quando atribui uma partição dos dados a processar com base no índice do pod. Os pods de um trabalho recebem um índice de conclusão associado. A eliminação de um trabalho limpa os pods que criou. A suspensão de um trabalho elimina os respetivos pods ativos até que o trabalho seja retomado.
|
Defina CronJobs para ações agendadas regulares | Use o CronJob para o GKE para realizar ações programadas regulares, como cópias de segurança, geração de relatórios ou preparação programada para modelos de aprendizagem automática. |
Faça a gestão de falhas num trabalho | Defina a política de falhas de pods do Kubernetes e o limite de falhas de recuo de pods para processar falhas repetíveis e não repetíveis numa tarefa. Esta definição melhora o consumo de recursos do cluster, evitando novas tentativas de pods desnecessárias e falhas de tarefas devido a interrupções de pods. Por exemplo, pode configurar a preempção, a
remoção iniciada pela API ou a remoção baseada em contaminação, em que os pods que não têm uma tolerância para o efeito de contaminação |
Faça a gestão de vários serviços como uma unidade | Use a API JobSet para gerir
várias tarefas como uma unidade para resolver padrões de carga de trabalho, como um condutor
(ou coordenador) e vários trabalhadores (por exemplo, MPIJob ), ao mesmo tempo que define
predefinições de tarefas alinhadas com padrões comuns com base nos seus exemplos
de utilização. Por exemplo, pode criar um trabalho indexado por predefinição, criar um serviço sem interface para nomes de domínio totalmente qualificados (FQDN) previsíveis para pods e definir a política de falhas de pods associada. |
Prolongue o tempo de execução de um pod que não tolera reinícios | Defina
a anotação cluster-autoscaler.kubernetes.io/safe-to-evict
do Kubernetes como false na especificação do pod. O redimensionador automático de clusters respeita as regras de despejo definidas nos pods. Estas restrições podem
impedir que um nó seja eliminado pelo dimensionamento automático se contiver um pod com a anotação cluster-autoscaler.kubernetes.io/safe-to-evict .
Para saber mais, consulte o artigo Considerar o agendamento e a interrupção de pods. |
Faça a gestão da multilocação
A multilocação do cluster do GKE é uma alternativa à gestão de recursos do GKE por diferentes utilizadores ou cargas de trabalho, denominados inquilinos, numa única organização. A gestão dos recursos do GKE pode seguir critérios como o isolamento de inquilinos, quotas e intervalos de limites ou a atribuição de custos.
A tabela seguinte apresenta as principais recomendações para a gestão de multi-tenancy:
Recomendação | Recursos |
---|---|
Use espaços de nomes para gerir o isolamento de inquilinos | Pode separar cada inquilino e os respetivos recursos do Kubernetes nos seus próprios namespaces. |
Use políticas para aplicar o isolamento de inquilinos | Defina políticas para restringir o acesso à API, definir quotas, restringir a utilização de recursos e restringir o que os contentores podem fazer. Estas políticas têm âmbito nos namespaces. |
Defina a atribuição de custos do GKE | Use a afetação de custos do GKE para obter estatísticas sobre os pedidos de recursos do cluster para cada inquilino com base no namespace. |
Controle o acesso à plataforma de processamento em lote
O GKE permite-lhe ajustar as autorizações de acesso das cargas de trabalho em execução no cluster.
A tabela seguinte lista as principais recomendações ao gerir o acesso e a segurança
Recomendação | Recursos |
---|---|
Defina a Workload Identity Federation para o GKE | O GKE permite que as cargas de trabalho no seu cluster do GKE
se façam passar por contas de serviço da gestão de identidade e de acesso (IAM) para aceder
Google Cloud a serviços. Ao usar a federação de identidade de cargas de trabalho para o GKE, as cargas de trabalho podem aceder em segurança a segredos armazenados fora do GKE.
Para saber mais, consulte os artigos Federação de identidades de cargas de trabalho para o GKE e aceda a segredos armazenados. |
Defina o isolamento da rede do cluster | Configure o isolamento de rede dos seus clusters para que o ponto final do plano de controlo e os nós de trabalho possam ter endereços IP internos.
Para saber mais, consulte o artigo Acerca da personalização do isolamento de rede. |
Use nós do GKE protegidos | Configure os nós do GKE protegidos para fornecer uma identidade e uma integridade de nós fortes e validáveis, de modo a aumentar a segurança dos nós do GKE. |
Isolamento físico | Por motivos de segurança, as suas cargas de trabalho podem precisar de um isolamento mais forte. Controle o agendamento com node taints para separar fisicamente os inquilinos em node pools usando node taints e tolerâncias de carga de trabalho. Isto garante que apenas as cargas de trabalho adequadas são agendadas nesses conjuntos de nós. |
Colocar em fila e partilha justa
Para controlar o consumo de recursos, pode atribuir limites de quota de recursos para cada inquilino, colocar trabalhos recebidos em fila e processar trabalhos pela ordem em que foram recebidos.
A tabela seguinte apresenta as principais recomendações para gerir o processamento em fila e a partilha equitativa entre cargas de trabalho em lote:
Recomendação | Recursos |
---|---|
Use Kueue | O Kueue é um sistema de filas de tarefas nativo do Kubernetes para processamento em lote, computação de alto desempenho, aprendizagem automática e aplicações semelhantes num cluster do Kubernetes. Para ajudar na partilha justa de recursos do cluster entre os respetivos inquilinos, o Kueue gere as quotas e a forma como as tarefas as consomem. O Kueue toma as seguintes decisões:
Para saber como implementar um sistema de filas de tarefas, consulte o artigo Implemente um sistema de filas de tarefas com partilha de quotas entre espaços de nomes no GKE. Para saber mais sobre o Kueue, consulte o artigo Conceitos do Kueue. |
Otimize o armazenamento, o desempenho e a rentabilidade
A utilização eficiente dos nossos recursos de computação e armazenamento do GKE pode reduzir os custos. Uma estratégia consiste em dimensionar e configurar corretamente as instâncias de computação para se alinharem com as suas necessidades de processamento em lote sem sacrificar o desempenho.
A tabela seguinte apresenta as principais recomendações para conceber e gerir o armazenamento, bem como otimizar o desempenho:
Recomendação | Recursos |
---|---|
Use discos persistentes do Compute Engine | Recomendamos que use as seguintes configurações de discos persistentes do Compute Engine:
|
Use armazenamento associado à rede | Use o armazenamento associado à rede seguinte juntamente com o Persistent Disk para um desempenho de armazenamento ideal:
|
Defina o Pub/Sub | A sua carga de trabalho em lote também pode ler e escrever dados. Por exemplo, pode usar o Pub/Sub e escrever os resultados num armazém de dados, como o BigQuery, a partir do qual os relatórios e os painéis de controlo são atualizados. Recomendamos que use as seguintes soluções de armazenamento:
|
Especifique os parâmetros de otimização para a sua carga de trabalho | Recomendamos que use as seguintes configurações:
|
Otimize a rede e a latência das suas cargas de trabalho | O GKE suporta a política de posicionamento compacto para pools de nós que especifica que estes nós (e, por conseguinte, as cargas de trabalho executadas neles) devem ser colocados mais próximos fisicamente uns dos outros numa zona. Isto é especialmente útil para cargas de trabalho estreitamente associadas e de alto desempenho, em que a baixa latência entre os diferentes processos que compõem a carga de trabalho é uma grande preocupação. Para saber mais, consulte o posicionamento compacto. |
Utilize VMs do Spot | As VMs de spot são instâncias de máquinas virtuais (VMs) do Compute Engine com um preço inferior ao das VMs do Compute Engine padrão e não oferecem garantia de disponibilidade. Recomendamos que use as seguintes soluções:
|
Use o streaming de imagens | Use o streaming de imagens para extrair imagens de contentores. O GKE transmite dados de imagens elegíveis. Isto permite que as suas cargas de trabalho sejam inicializadas sem esperar que a imagem completa seja transferida, o que resulta em tempos de inicialização significativamente melhorados e uma melhor rentabilidade. |
Monitorize clusters
O GKE está integrado com ferramentas de observabilidade e registo que ajudam a monitorizar a fiabilidade e a eficiência do seu cluster. A tabela seguinte lista as principais recomendações quando ativa e usa as ferramentas de observabilidade do GKE:
Recomendação | Recursos |
---|---|
Use o Prometheus | O GKE está integrado com o Google Cloud Observability. Personalize as métricas que quer que o GKE envie para o Cloud Logging e o Cloud Monitoring O Google Cloud Managed Service for Prometheus está ativado para clusters do GKE por predefinição. Recomendamos que use a recolha gerida para eliminar a complexidade da configuração e manutenção de servidores Prometheus. Para saber mais, consulte o Managed Service for Prometheus. |
Use painéis de controlo do Cloud Monitoring | Use os painéis de controlo de monitorização do GKE para ver uma vista geral de alto nível da utilização de recursos e clusters, bem como detalhar e filtrar várias métricas e dimensões. Para saber mais, consulte o artigo Observar os clusters do GKE. |
O que se segue?
- Saiba como implementar um sistema de lotes com o Kueue
- Consulte as práticas recomendadas para executar aplicações Kubernetes otimizadas em termos de custos no GKE