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.
Crie um novo repositório do Docker:
gcloud artifacts repositories create main --repository-format=docker \ --location=$REGION \ --description="docker repository"
Configure a autenticação para repositórios do Docker:
gcloud auth configure-docker $REGION-docker.pkg.dev
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
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
eTF_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
eMETRIC_WINDOW
para2592000
segundos (30 dias).
Implemente a configuração do Terraform
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.
Execute manualmente a tarefa do Cloud Scheduler:
gcloud scheduler jobs run recommendation-schedule --location ${REGION}
Valide a implementação
Selecione o separador Registos na página de detalhes de
workload-recommendations
.Verifique se os registos de métricas estão a ser processados na consola do 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
Aceda à página do BigQuery na Google Cloud consola:
Verifique se os dados estão visíveis na tabela
gke_metrics
e na vistacontainer_recommendations
. Consoante o número de cargas de trabalho, pode demorar alguns minutos a escrever todas as métricas no BigQuery.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
- Abra o modelo do painel de controlo de redimensionamento da carga de trabalho
- Clique em Usar os meus próprios dados.
- Selecione o seu projeto.
- Para Conjunto de dados, selecione
gke_metric_dataset
. - Para Tabela, selecione
container_recommendations
. - Clique em Adicionar.
- 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.