Ajuste o tamanho das suas cargas de trabalho do GKE em grande escala

Este tutorial mostra como dimensionar corretamente as suas cargas de trabalho do Google Kubernetes Engine (GKE) com recomendações do VPA e métricas de utilização.

Compreenda por que motivo o ajuste de tamanho dos recursos é importante

O aprovisionamento insuficiente pode privar os seus contentores dos recursos necessários para executar as suas aplicações, tornando-as lentas e não fiáveis. O aprovisionamento excessivo não afeta o desempenho das suas aplicações, mas pode aumentar a sua fatura mensal.

A tabela seguinte descreve as implicações do aprovisionamento insuficiente e do aprovisionamento excessivo de CPU e memória:

Recurso Estado da administração de contas Risco Explicação
CPU Over Custo Aumenta o custo das suas cargas de trabalho reservando recursos desnecessários.
Abaixo Desempenho Pode fazer com que as cargas de trabalho abrande ou deixe de responder.
Não definido Fiabilidade A CPU pode ser limitada a 0, o que faz com que as suas cargas de trabalho não respondam.
Memória Over Custo Aumenta o custo das suas cargas de trabalho reservando recursos desnecessários.
Abaixo Fiabilidade Pode fazer com que as aplicações terminem com um erro de falta de memória (OOM).
Não definido Fiabilidade kubelet pode parar os seus Pods em qualquer altura e marcá-los como com falhas.

Crie um repositório

Crie o repositório para armazenar a imagem do exportador de métricas.

  1. Crie um novo repositório do Docker:

    gcloud artifacts repositories create main --repository-format=docker \
        --location=$REGION \
        --description="docker repository"
    
  2. Configure a autenticação para repositórios do Docker:

    gcloud auth configure-docker $REGION-docker.pkg.dev
    
  3. Implemente a imagem executando o seguinte comando:

    gcloud builds submit metrics-exporter --region=$REGION --tag $IMAGE
    

Implemente a aplicação

Na secção seguinte, vai usar o Terraform para realizar as seguintes tarefas:

  • Crie uma conta de serviço e atribua as autorizações necessárias para gerir e interagir com os Google Cloud recursos.
  • Conceda as funções de visitante de monitorização, editor de dados do BigQuery, proprietário de dados do BigQuery, utilizador da tarefa do BigQuery e invocador do Cloud Run à conta de serviço.
  • Implemente uma tarefa do Cloud Run que extrai uma imagem Docker do Artifact Registry e a executa com a configuração especificada.
  • Crie uma tarefa do Cloud Scheduler que aciona o serviço do Cloud Run diariamente.
  • Crie um conjunto de dados, uma tabela e uma vista do BigQuery para armazenar dados de métricas e recomendações.

Configure o Terraform

  1. Defina as variáveis de ambiente de configuração:

    export TF_VAR_BIGQUERY_DATASET=gke_metrics_dataset
    export TF_VAR_BIGQUERY_TABLE=gke_metrics
    export TF_VAR_RECOMMENDATION_WINDOW_SECONDS=1209600
    export TF_VAR_RECOMMENDATION_DISTANCE=86400
    export TF_VAR_LATEST_WINDOW_SECONDS=600
    export TF_VAR_METRIC_WINDOW=259200
    export TF_VAR_METRIC_DISTANCE=600
    

    Este comando inclui o seguinte:

    • TF_VAR_BIGQUERY_DATASET e TF_VAR_BIGQUERY_TABLE: contêm os dados das métricas do GKE.
    • TF_VAR_RECOMMENDATION_WINDOW_SECONDS: o período para as recomendações de VPA. A predefinição é 1 209 600 segundos ou 14 dias.
    • TF_VAR_RECOMMENDATION_DISTANCE: o intervalo ao qual os pontos de dados de recomendações de VPA são devolvidos. A predefinição é 86 400 segundos ou a cada 1 dia.
    • TF_VAR_LATEST_WINDOW_SECONDS: o período para obter os valores de recursos pedidos e limite mais recentes. A predefinição é 600 segundos ou 10 minutos.
    • METRIC_WINDOW: estabelece o período para as métricas de utilização e utilização do GKE. A predefinição é 259 200 segundos ou 3 dias.
    • METRIC_DISTANCE: o intervalo ao qual os pontos de dados são devolvidos. A predefinição é 600 segundos ou a cada 10 minutos.

    Ajuste estes valores com base nas necessidades das suas cargas de trabalho. Por exemplo, para cargas de trabalho em lote que são executadas uma vez por mês, atualize TF_VAR_RECOMMENDATION_WINDOW_SECONDS e METRIC_WINDOW para 2592000 segundos (30 dias).

Implemente a configuração do Terraform

  1. Inicialize, valide e aplique a configuração:

    terraform -chdir=terraform init
    terraform -chdir=terraform validate
    terraform -chdir=terraform apply -var project_id=$PROJECT_ID -var region=$REGION -var image=$IMAGE
    

    Este comando fornece um plano de execução e pede a sua aprovação antes de fazer alterações. Reveja o plano e, se tudo estiver conforme esperado, escreva yes para continuar.

    Depois de o comando apply ser concluído com êxito, os seus recursos são criados e geridos pelo Terraform.

  2. Execute manualmente a tarefa do Cloud Scheduler:

    gcloud scheduler jobs run recommendation-schedule --location ${REGION}
    

Valide a implementação

  1. Selecione o separador Registos na página de detalhes de workload-recommendations.

  2. Verifique se os registos de métricas estão a ser processados na consola do Cloud Run:

    Aceda ao Cloud Run

    Os registos mostram as métricas a serem escritas no BigQuery. O resultado deve ser semelhante ao seguinte:

    INFO - Building Row
    INFO - Successfully wrote 12 rows to BigQuery table [PROJECT_ID].gke_metric_dataset.gke_metrics.
    INFO - Run Completed
    

    Se o resultado não corresponder, aguarde cinco minutos e, em seguida, execute o comando gcloud scheduler jobs run recommendation-schedule --location $REGION.

Veja a recomendação de contentor no BigQuery

  1. Aceda à página do BigQuery na Google Cloud consola:

    Aceda ao BigQuery

  2. Verifique se os dados estão visíveis na tabela gke_metrics e na vista container_recommendations. Consoante o número de cargas de trabalho, pode demorar alguns minutos a escrever todas as métricas no BigQuery.

  3. No editor de consultas, selecione todas as linhas na vista container_recommendations:

    SELECT * FROM `PROJECT_ID.gke_metrics_dataset.container_recommendations`
    

    Este programa extrai as seguintes métricas do Cloud Monitoring:

    • Detalhes da carga de trabalho: o ID do projeto, o nome do cluster, o controlador e o nome do contentor.

    • Utilização e utilização da CPU/memória: a quantidade de CPU e memória que está a ser usada pela carga de trabalho, bem como a percentagem de CPU e memória que está a ser usada.

    • Pedido e limites: a quantidade de CPU e memória pedida para a carga de trabalho, bem como a quantidade máxima de CPU e memória permitida para a carga de trabalho.

    • Recomendações de carga de trabalho de CPU e memória: recomendações sobre a quantidade de CPU e memória que deve ser atribuída à carga de trabalho para garantir que é executada sem problemas, com base nas recomendações do VPA para implementações e na utilização real e nas utilizações de destino para objetos que não sejam de implementação.

Visualize recomendações no Looker Studio

O Looker Studio é uma plataforma de Business Intelligence autónoma e sem custo financeiro que lhe permite criar e consumir visualizações de dados, painéis de controlo e relatórios. Com o Looker Studio, pode estabelecer ligação aos seus dados, criar visualizações e partilhar as suas estatísticas com outras pessoas.

Use o Looker Studio para visualizar dados na vista do BigQuery:container_recommendations

  1. Abra o modelo do painel de controlo de redimensionamento da carga de trabalho
  2. Clique em Usar os meus próprios dados.
  3. Selecione o seu projeto.
  4. Para Conjunto de dados, selecione gke_metric_dataset.
  5. Para Tabela, selecione container_recommendations.
  6. Clique em Adicionar.
  7. Clique em Adicionar ao relatório.

Detalhes do modelo do Looker Studio

A página de detalhes do modelo do Looker Studio fornece as seguintes informações:

  • Vista geral do ajuste de tamanho das cargas de trabalho do GKE: fornece uma vista geral dos seus clusters, incluindo:
    • O número de cargas de trabalho de melhor esforço e capacidade de expansão que estão em risco de ter problemas de fiabilidade e desempenho.
    • Potenciais poupanças de recursos de CPU e memória. Os valores positivos indicam um aprovisionamento excessivo, enquanto os valores negativos indicam um aprovisionamento insuficiente.
  • Recomendações de cargas de trabalho: fornece recomendações para pedidos e limites de CPU e memória de cargas de trabalho.
  • Cargas de trabalho do GKE em risco: mostra as cargas de trabalho com o maior risco de ter problemas de fiabilidade e desempenho.
  • Histórico – Ajuste de tamanho da carga de trabalho – Como está o nosso desempenho?: Fornece uma vista do histórico de como a adequação do tamanho da carga de trabalho e a redução do número de cargas de trabalho de melhor esforço foram implementadas.

Recomendação de contentor de limite e CPU pedida

Se os valores de CPU pedidos e limite das cargas de trabalho forem iguais, a QoS é considerada Garantida e a recomendação de CPU é definida como o máximo no período de 14 dias. Caso contrário, é usado o percentil 95 da recomendação de CPU pedida no prazo de 14 dias.

Quando os valores de pedido e limite de CPU são iguais, a recomendação para o limite de CPU é definida como a recomendação de VPA de pedido de CPU máximo apenas para objetos de implementação e a utilização de CPU com uma utilização alvo de 70%. Se o pedido e o limite da carga de trabalho não forem idênticos, é usada a taxa de limite existente.

Memória pedida e recomendação do contentor de limite

As recomendações de memória usam a recomendação de VPA máxima apenas para objetos de implementações e a utilização máxima de memória com uma utilização alvo de 80% para garantir a fiabilidade das cargas de trabalho. Pode atualizar os valores de utilização alvo na consulta da vista container_recommendation.

É uma prática recomendada usar a mesma quantidade de memória para pedidos e limites porque a memória é um recurso não comprimível. Quando a memória se esgota, o Pod tem de ser desativado. Para evitar a desativação dos pods e a desestabilização do seu ambiente, tem de definir a memória pedida para o limite de memória.

Priorizar recomendações

É atribuído um valor de prioridade a cada linha para apresentar cargas de trabalho que requerem atenção imediata com base nas recomendações. As unidades de CPU e memória são diferentes. Para normalizar as unidades, a proporção entre a CPU predefinida e a memória do preço a pedido do tipo de máquina E2 é usada como uma aproximação para converter as unidades de memória em unidades de CPU.

A prioridade é calculada através da seguinte fórmula:

priority = (CPU requested - CPU recommendation) + ((memory requested -
memory recommendation) / (vCPUs on-demand pricing /memory on-demand pricing ))

Para o Autopilot, o total de recursos pedidos pela configuração de implementação deve estar dentro dos valores mínimos e máximos suportados.

Veja recomendações de VPA para vários projetos

Para ver recomendações de contentores de VPA em vários projetos, use um novo projeto como projeto de âmbito.

Quando implementar este projeto no seu ambiente de produção, adicione todos os projetos que quer analisar ao âmbito das métricas do novo projeto.