Este documento ajuda você a navegar pela documentação do Google Kubernetes Engine (GKE) para encontrar diretrizes e recomendações de otimização de custos. O GKE oferece recursos abrangentes de escalonamento automático e programação que podem ser usados para minimizar o custo do cluster e manter a estabilidade do aplicativo.
Para uma visão geral consolidada de todas as práticas recomendadas do GKE, consulte Práticas recomendadas para o GKE.Você já precisa conhecer os seguintes conceitos:
Visão geral
Ao implementar o GKE, é preciso considerar diferentes aspectos técnicos para se alinhar aos requisitos de aplicativos e negócios. Além de definir rede, segurança, armazenamento e outros aspectos técnicos, é preciso avaliar custo e desempenho para atender às necessidades da empresa. Em vez de tratar custo e desempenho como entidades distintas, é preciso integrá-los desde os estágios iniciais do planejamento da infraestrutura para definir uma relação unificada que determine a confiabilidade e os gastos com a nuvem. Espera-se baixo custo e alta confiabilidade, mas, à medida que você escalona, a complexidade de gerenciar essa compensação aumenta.
Para reduzir os custos e garantir a estabilidade do aplicativo, defina ou ajuste os seguintes recursos do GKE:
- Configuração do GKE
- Configuração da carga de trabalho
- Referência e visibilidade de custos
Você também pode descobrir e implementar práticas recomendadas de otimização de custos usando o Compute Advisor (prévia). Para mais informações, consulte Usar o Compute Advisor.
Usar o Autopilot do GKE
Para pequenos ambientes de sandbox ou desenvolvimento, selecione clusters do Autopilot. No Autopilot, o GKE gerencia os nós de forma dinâmica, e você só recebe cobranças pela capacidade de pod solicitada, o que ajuda a evitar cobranças de VM, sistema operacional do nó e overhead do sistema.
Para mais informações, consulte a visão geral do Autopilot do GKE.
Entender como o escalonamento automático funciona
Os controladores de escalonamento automático do GKE ajustam dinamicamente os recursos à medida que as solicitações de tráfego mudam.
Adicionar e remover pods com base em métricas de utilização
Um HorizontalPodAutoscaler (HPA) adiciona e remove pods com base em métricas de CPU ou personalizadas.
Para entender e configurar o escalonamento automático horizontal de pods, consulte a seguinte documentação do GKE:
- Conceitos de escalonamento automático horizontal de pods
- Configurar o escalonamento automático horizontal de pods
- Ver eventos do Autoescalonador Horizontal de Pods
- Expor métricas de aplicativos personalizados para escalonamento automático
Configure um limite de utilização desejada (por exemplo, 70% ou 80%) para manter um buffer que processe picos de tráfego enquanto outros pods de réplica são iniciados.
Escalonar seus pods com base nas métricas de utilização
Use o VerticalPodAutoscaler (VPA) para dimensionar dinamicamente as solicitações de CPU e memória do contêiner para cargas de trabalho que não usam o escalonamento automático horizontal de pods ou quando as cargas de trabalho de pico são desconhecidas.
Para entender e configurar o escalonamento automático vertical de pods, consulte a seguinte documentação do GKE:
- Conceitos de escalonamento automático vertical de pods
- Escalonar solicitações e limites de recursos de contêiner
Mantenha o VPA no modo Off (somente recomendação) por pelo menos 24 horas (idealmente uma semana) em ambientes semelhantes aos de produção para capturar padrões de tráfego representativos. Para evitar ajustes de tamanho irregulares, especifique limites mínimos e máximos explícitos no objeto VerticalPodAutoscaler antes de ativar os modos Initial ou Auto.
Automatizar o escalonamento da infraestrutura usando o escalonador automático de cluster
Para escalonar os nós de computação subjacentes com base em uma simulação de programação ativa em vez de cargas de métricas, ative o escalonador automático de cluster nos pools de nós do GKE Standard. Especifique os parâmetros mínimos de nós para oferecer suporte à capacidade noturna básica.
Sempre configure um objeto PodDisruptionBudget (PDB) para pods de sistema e de aplicativo. Essa configuração ajuda a garantir que o escalonador automático de cluster não cause interrupções acidentais no serviço ao consolidar ou reduzir escala vertical pools de nós subutilizados.
Para entender e configurar o escalonador automático de cluster, consulte a seguinte documentação do GKE:
- Sobre cluster do GKE do GKE
- Como fazer o escalonamento automático de um cluster
- Conferir eventos do escalonador automático de clusters
Implante pools de nós dinâmicos usando a criação automática de pool de nós
Ative a criação automática de pool de nós para gerar automaticamente pools de nós personalizados do GKE com formatos, contagens de CPU ou limites de memória que se ajustem com precisão aos parâmetros de programação dos pods pendentes. Esse recurso minimiza os recursos restantes em nós superdimensionados.
Para entender e configurar a criação automática de pool de nós, consulte a seguinte documentação do GKE:
Lista de verificação de escalonamento automático
Características da infraestrutura
Alinhe o hardware, a localização e as regras de rede do nó do cluster com as prioridades de otimização de custos.
Selecionar os tipos de máquina adequados
Selecione os tipos de máquina adequados para seu cluster com base na localização dos usuários e dos dados que o cluster precisa acessar.
Para mais informações, consulte o Guia de comparação e recursos para famílias de máquinas.
Implantar cargas de trabalho tolerantes a falhas em VMs spot
Use VMs spot para executar cargas de trabalho sem estado, tolerantes a falhas ou em lote com um desconto de até 91% em comparação com instâncias de VM sob demanda.
Para mais informações, consulte a seguinte documentação do GKE:
- Conceitos de VMs spot
- Executar cargas de trabalho tolerantes a falhas a custos menores com as VMs do Spot
- Execute cargas de trabalho tolerantes a falhas a custos menores em pods do Spot
Mapear famílias de máquinas eficientes e configurações do sistema operacional
Personalize as configurações de máquina do pool de nós com perfis de instância econômicos (por exemplo, arquiteturas de VM E2).
Para mais informações sobre como dimensionar nós, configurar tempos de preempção de VM spot e configurar configurações de kernel, consulte Sobre pools de nós.
Selecionar a região apropriada
Quando a latência não afeta seus usuários, execute cargas de trabalho de cluster em regiões do Compute Engine com custos operacionais mais baixos.
Para mais informações, consulte Práticas recomendadas para a seleção de regiões do Compute Engine.
Inscrever-se no CUD
Compre descontos por compromisso de uso (CUDs) para garantir preços com grandes descontos (até 70%) para recursos de computação de valor de referência durante um período de um ou três anos.
Para mais informações, consulte Descontos por compromisso de uso com base em recursos.
Considerar os custos de rede
Os clusters regionais e multizonais do GKE melhoram a confiabilidade dos aplicativos, mas podem gerar custos internos de saída de rede entre zonas.
Para minimizar e controlar os custos de rede, considere o seguinte:
- Transferências de dados entre zonas:embora os clusters regionais aumentem a disponibilidade ao distribuir cargas de trabalho entre zonas, há custos associados aos dados transferidos entre elas.
Para mais informações, consulte Todos os preços de rede.
Implantar clusters de zona única para ambientes que não sejam de produção
Em ambientes que não são de produção, para evitar cobranças de rede entre zonas e reduzir a sobrecarga de VMs, implante clusters de zona única em vez de clusters regionais ou multizonais.
Para mais informações, consulte Sobre as opções de configuração de cluster.
Otimizar caminhos de resolução de DNS do cluster e tráfego de entrada
Para otimizar a resolução de DNS do cluster e o tráfego de entrada, implante o NodeLocal DNSCache e os grupos de endpoints de rede (NEGs).
Quando você executa cargas de trabalho com uso intenso de DNS, o NodeLocal DNSCache executa um daemon de DNS local em cada nó. Essa configuração impede que cargas de consulta altas esgotem o CoreDNS, evitando a necessidade de escaloná-lo e reduzindo os custos gerais do GKE.
Para o tráfego de entrada, o balanceamento de carga nativo de contêineres por NEGs encaminha o tráfego diretamente para endereços IP de pod em vez de grupos de instâncias. Esse roteamento direto facilita o redirecionamento de tráfego sem problemas durante as ações de escalonamento de pods.
Para mais informações, consulte:
- Configurar o NodeLocal DNSCache
- Visão geral do balanceamento de carga nativo de contêiner
- Como configurar o Ingress para balanceadores de carga de aplicativo externos
Aplicar cotas de recursos por namespace
Implante objetos ResourceQuota padrão do Kubernetes por namespace em clusters multilocatários para bloquear os limites de forma de CPU e memória e impedir que equipes individuais programem cargas de trabalho não compatíveis que acionam cobranças inesperadas de computação.
Para mais informações, consulte Namespaces na documentação do Kubernetes.
Implementar auditorias do Controlador de Políticas
Implante o Controlador de Políticas para auditar e aplicar dinamicamente a conformidade do cluster com os padrões corporativos. O Controlador de Políticas usa o controle de admissão para rejeitar recursos mal configurados.
Para ver mais informações, consulte os seguintes tópicos:
Bloquear manifestos não compatíveis em pipelines de CI/CD
Valide a conformidade com a política de custos no início do ciclo de vida de desenvolvimento.
Integre scripts de validação (como a análise de kpt) em verificações de pré-commit ou
solicitação de pull para auditar e bloquear manifestos não compatíveis antes que eles
cheguem ao cluster.
Para mais informações, consulte Validar apps em relação às políticas da empresa em um pipeline de CI.
Lista de verificação da infraestrutura
Otimização de aplicativos e cargas de trabalho
Configure suas cargas de trabalho para usar os recursos de maneira eficiente e reduzir a sobrecarga operacional.
Especificar solicitações e limites de memória correspondentes
Especifique solicitações precisas de CPU e memória do contêiner antes da implantação. Para a CPU, configure solicitações para atender aos objetivos de nível de serviço (SLOs), mas deixe os limites irrestritos. Para memória, verifique se a alocação solicitada corresponde ao limite de memória.
Para mais informações, consulte Redimensionar recursos de CPU e memória atribuídos a contêineres na documentação do Kubernetes.
Acelerar os horários de início do contêiner
Crie imagens de contêiner o menor possível para minimizar o tempo de download.
Configurar PDBs
Especifique um objeto PodDisruptionBudget (PDB) para réplicas de aplicativos e limite interrupções voluntárias e garanta a estabilidade quando o GKE reduzir escala vertical ou quando ocorrerem upgrades de nós.
Para mais informações, consulte Como especificar um orçamento de interrupção para seu aplicativo.
Definir sondagens de prontidão e atividade significativas
Configure sondagens de atividade e prontidão para todos os contêineres e ajude a garantir que o GKE roteie o tráfego apenas para pods prontos e reinicie instâncias com falha, evitando a perda de tráfego durante o escalonamento automático.
Para mais informações, consulte Configurar sondagens de atividade, prontidão e inicialização.
Configurar o encerramento completo do aplicativo
Prepare os contêineres para o encerramento otimizado detectando o sinal SIGTERM,
finalizando as solicitações em andamento antes de sair ou configurando
os hooks preStop.
Para mais informações, consulte Encerramento e encerramento completo de VMs preemptivas.
Implementar novas tentativas com espera exponencial
Implemente novas tentativas de espera exponencial no nível do aplicativo ou da malha de serviço para lidar com falhas temporárias ou possíveis preempções de VM spot.
Para mais informações, consulte Retries na documentação do Istio.
Lista de verificação de otimização de aplicativos e cargas de trabalho
Referência e visibilidade de custos
Para otimizar os custos, primeiro você precisa ter visibilidade dos gastos do GKE e de como eles são alocados. Essa visibilidade ajuda a atribuir custos às equipes e unidades de negócios que os geram.
A documentação do GKE a seguir descreve como estabelecer uma visibilidade profunda do faturamento, do consumo de recursos e das métricas de referência do GKE.
Ativar a alocação de custos do GKE
Ative a alocação de custos do GKE para ter visibilidade das solicitações de recursos da carga de trabalho e dos custos associados. A alocação de custos atribui os custos do cluster a namespaces e rótulos do Kubernetes das suas cargas de trabalho.
Exporte esses detalhes para o BigQuery para analisar os dados no Cloud Billing. Use essa análise para identificar quais cargas de trabalho causam picos de faturamento, realizar estornos e otimizar solicitações de recursos.
Para mais informações, consulte Receber insights importantes sobre gastos para a alocação de recursos do GKE e os custos do cluster.
Analisar os volumes de ingestão de registros e métricas
Ativar o Cloud Logging e o Cloud Monitoring para seus clusters gera custos. Altos volumes de ingestão de registros e métrica personalizada podem resultar em cobranças inesperadas. Audite centralmente quais níveis de registro e métricas personalizadas são ingeridos.
Para mais informações sobre como resolver problemas de uso excessivo da API Logging ou de tempos limite de gravação de registros, consulte:
Monitorar a integridade do Metrics Server
Monitore a integridade da implantação do Metrics Server, porque os controladores de escalonamento automático integrados do GKE dependem dele para recuperar métricas de CPU e memória.
Para mais informações, consulte Solucionar problemas do escalonamento automático horizontal de pods.
Promover uma cultura de economia de custos
Ofereça aos desenvolvedores acesso a painéis de gastos na nuvem e estabeleça um treinamento de FinOps para alinhar as decisões de arquitetura com os orçamentos de custos comerciais.
Para mais informações sobre a cultura de eficiência de custos organizacionais, consulte Disseminar a cultura de economia de custos.
Lista de verificação de visibilidade e valor de referência de custo
Usar o Compute Advisor
O Compute Advisor é uma interface com tecnologia de IA no console Google Cloud , com tecnologia do Gemini, que ajuda você a projetar arquiteturas resilientes e econômicas para o GKE.
O Compute Advisor fornece orientações de disponibilidade quase em tempo real para VMs flex-start e VMs spot, além de verificar as políticas e cotas de recursos da sua organização antes da implantação. O Compute Advisor não oferece orientação de disponibilidade para cargas de trabalho que exigem recursos sob demanda.
Para acessar o Gemini no console do Google Cloud , siga estas etapas:
-
No console Google Cloud , acesse a página Visão geral.
-
Na seção Projetar sua infraestrutura com o Compute Advisor, envie um comando. O Gemini começa a gerar uma resposta.
-
Para gerar recomendações de arquitetura, execute um dos exemplos de comandos a seguir no Compute Advisor. Quando você clica nos botões Executar comando no Compute Advisor, o console do Google Cloud pode levar mais de 15 segundos para carregar:
Escalonamento automático e empacotamento:
Caso de uso:para maximizar o empacotamento e minimizar a sobrecarga de CPU ociosa, use este comando para configurar uma estratégia de escalonamento automático de cluster do GKE e pools de nós.
Configure a GKE cluster to use autoscaler and node pool strategy to maximize bin packing and minimize idle CPU overhead.Governança de multilocação:
Caso de uso:para manter os namespaces de desenvolvimento dentro dos limites de orçamento, use este comando para criar uma política de ResourceQuota para um cluster do GKE multilocatário.
Draft a ResourceQuota policy for a multi-tenant GKE cluster to keep development namespaces within budget bounds.Otimização de cargas de trabalho:
Caso de uso:para ajudar você a decidir se é melhor usar o modo Autopilot ou Standard do GKE para uma carga de trabalho em lote com demandas de recursos variáveis, use este comando para receber uma recomendação:
Recommend whether to use GKE Autopilot or Standard mode for a batch processing workload with highly variable resource demands.
A seguir
Para mais informações sobre os princípios arquitetônicos e a cultura organizacional necessários para a eficiência de custos, consulte Práticas recomendadas para executar aplicativos do Kubernetes otimizados para custo no GKE.