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, mantendo 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 estar familiarizado com o seguinte:
Visão geral
Ao implementar o GKE, é necessário 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, é necessário avaliar o custo e o desempenho para atender às necessidades de negócios. Em vez de tratar o custo e o desempenho como entidades distintas, é necessário integrá-los desde os estágios iniciais do planejamento da infraestrutura para definir um relacionamento unificado que determine a confiabilidade e os gastos na nuvem. Baixo custo e alta confiabilidade são esperados, mas, à medida que você escalona, a complexidade de gerenciar essa compensação aumenta.
Para conseguir baixo custo e estabilidade do aplicativo, é possível definir ou ajustar os seguintes recursos do GKE:
- Configuração do GKE
- Configuração da carga de trabalho
- Valor de referência e visibilidade de custos
Também é possível descobrir e implementar práticas recomendadas de otimização de custos usando o Compute Advisor (visualização). Para mais informações, consulte Usar o Compute Advisor.
Usar o Autopilot do GKE
Para ambientes de desenvolvimento ou sandbox pequenos, selecione clusters do Autopilot. No Autopilot, o GKE gerencia nós dinamicamente, e você só recebe cobranças pela capacidade de pod solicitada, o que ajuda a evitar cobranças de VM, sistema operacional de nó e sobrecarga do sistema.
Para mais informações, consulte Visão geral do Autopilot do GKE.
Entender como o escalonamento automático funciona
Os controladores de escalonamento automático do GKE ajustam os recursos dinamicamente à 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
- Visualizar eventos do escalonador automático horizontal de pods
- Expor métricas de aplicativos personalizados para escalonamento automático
Configure um limite de utilização de destino (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 em métricas de utilização
Use o VerticalPodAutoscaler (VPA) para dimensionar dinamicamente as solicitações de CPU e memória de contêineres para cargas de trabalho que não empregam 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 à produção para capturar padrões de tráfego representativos. Para evitar ajustes de dimensionamento instáveis, 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 clusters
Para escalonar os nós de computação subjacentes com base na simulação de programação ativa em vez de cargas de métricas, ative o escalonador automático de clusters em pools de nós padrão do GKE. Especifique os parâmetros mínimos do nó para oferecer suporte à capacidade de referência noturna.
Sempre configure um objeto PodDisruptionBudget (PDB) para pods de sistema e aplicativos. Essa configuração ajuda a garantir que o escalonador automático de clusters não cause interrupções de serviço inadvertidamente ao consolidar ou reduzir pools de nós subutilizados.
Para entender e configurar o escalonador automático de clusters, consulte a seguinte documentação do GKE:
- Sobre cluster do GKE do GKE
- Como fazer o escalonamento automático de um cluster
- Visualizar eventos do escalonador automático de clusters
Implantar 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 ajustam precisamente aos parâmetros de programação de 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 do escalonamento automático
Características da infraestrutura
Alinhe o hardware do cluster, a localização e as regras de rede de nós com as prioridades de otimização de custos.
Selecionar os tipos de máquina apropriados
Selecione os tipos de máquina apropriados para o 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 do Spot
Use VMs do 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 do Spot
- Executar cargas de trabalho tolerantes a falhas a custos menores com as VMs do Spot
- Executar 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 uso contínuo (CUDs) para garantir preços com grandes descontos (até 70%) para recursos de computação de referência em um período de um ou três anos.
Para mais informações, consulte Descontos por uso contínuo com base em recursos.
Considerar os custos de rede
Os clusters regionais e multizonais do GKE melhoram a confiabilidade do aplicativo, mas podem gerar custos de saída de rede entre zonas internas.
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 essas zonas.
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 sejam 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 clusters.
Otimizar caminhos de resolução de DNS de cluster e tráfego de entrada
Para otimizar a resolução de DNS de cluster e o tráfego de entrada, é possível implantar o NodeLocal DNSCache e grupos de endpoints de rede (NEGs).
Ao executar cargas de trabalho com muitos DNSs, o NodeLocal DNSCache executa um daemon DNS local em cada nó. Essa configuração impede que cargas de consulta altas esgotem o CoreDNS, evitando a necessidade de escalonar o CoreDNS e reduzindo os custos gerais do GKE.
Para o tráfego de entrada, o balanceamento de carga nativo do contêiner por meio de NEGs roteia o tráfego diretamente para endereços IP de pods em vez de grupos de instâncias. Esse roteamento direto facilita o redirecionamento de tráfego normal durante as ações de escalonamento de pods.
Veja mais informações em:
- Configurar o NodeLocal DNSCache
- Visão geral do balanceamento de carga nativo do 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 limites de formato de CPU e memória e impedir que equipes individuais programem cargas de trabalho não compatíveis que acionem cobranças de computação inesperadas.
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 da política de custos no início do ciclo de vida de desenvolvimento.
Integre scripts de validação (como a análise kpt) em verificações de pré-commit ou pull request para auditar e bloquear manifestos não compatíveis antes que eles cheguem ao cluster.
Para mais informações, consulte Validar aplicativos 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 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 as solicitações para atender aos objetivos de nível de serviço (SLOs), mas deixe os limites irrestritos. Para a 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 tempos de inicialização do contêiner
Deixe as imagens de contêiner o menor possível para minimizar os tempos de download de imagens.
Configurar PDBs
Especifique um objeto PodDisruptionBudget (PDB) para réplicas de aplicativos para limitar interrupções voluntárias e garantir a estabilidade quando o GKE é reduzido ou quando ocorrem upgrades de nós.
Para mais informações, consulte Como especificar um orçamento de interrupção para seu aplicativo.
Definir sondas de prontidão e vivacidade significativas
Configure sondas de prontidão e vivacidade para todos os contêineres para ajudar 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 Probes.
Configurar o encerramento normal do aplicativo
Prepare os contêineres para o encerramento normal ouvindo o sinal SIGTERM, finalizando as solicitações em andamento antes de sair ou configurando 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 Novas tentativas na documentação do Istio.
Lista de verificação da otimização de aplicativos e cargas de trabalho
Valor de referência e visibilidade de custos
Para otimizar os custos, primeiro é necessário 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 incorrem.
A seguinte documentação do GKE descreve como estabelecer uma visibilidade detalhada 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 custos de cluster a namespaces e rótulos do Kubernetes das 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 e os custos de cluster do GKE.
Analisar volumes de ingestão de registros e métricas
A ativação do Cloud Logging e do Cloud Monitoring para seus clusters gera custos. Grandes 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 solucionar problemas de alto uso da API Logging ou 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 Solução de problemas de escalonamento automático horizontal de pods.
Promover uma cultura de economia de custos
Forneça aos desenvolvedores acesso a painéis de gastos na nuvem e estabeleça treinamentos de FinOps para alinhar as decisões arquitetônicas aos orçamentos de custos comerciais.
Para mais informações sobre a cultura de eficiência de custos organizacional, consulte Disseminar a cultura de economia de custos.
Lista de verificação de valor de referência e visibilidade de custos
Usar o Compute Advisor
O Compute Advisor é uma interface com tecnologia de IA no Google Cloud console, 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 do 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 fornece orientações de disponibilidade para cargas de trabalho que exigem recursos sob demanda.
Para acessar o Gemini no Google Cloud console, siga as seguintes etapas:
-
No Google Cloud console, acesse a página Visão geral.
-
Na seção Projete sua infraestrutura com o Compute Advisor, envie um comando. O Gemini começa a gerar uma resposta.
-
Para gerar recomendações arquitetônicas, execute um dos seguintes comandos de exemplo no Compute Advisor. Ao clicar nos botões Executar comando no Compute Advisor, o Google Cloud console 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 esse comando para configurar uma estratégia para o 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 do orçamento, use esse 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 da carga de trabalho:
Caso de uso:para ajudar você a decidir se é melhor usar o modo Autopilot ou o modo Standard do GKE para uma carga de trabalho em lote com demandas de recursos variáveis, use esse 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 econômicos do Kubernetes no GKE.