Ce tutoriel explique comment dimensionner correctement vos charges de travail Google Kubernetes Engine (GKE) avec des recommandations et des métriques d'utilisation VPA.
Comprendre l'importance du dimensionnement approprié des ressources
Le sous-provisionnement peut priver vos conteneurs des ressources nécessaires pour exécuter vos applications, ce qui les rend lents et peu fiables. Le surprovisionnement n'a aucune incidence sur les performances de vos applications, mais peut augmenter votre facture mensuelle.
Le tableau suivant décrit les implications du sous-provisionnement et du surprovisionnement du processeur et de la mémoire :
Ressource | État du provisionnement | Risque | Explication |
---|---|---|---|
Processeur | Plus de | Coût | Augmente le coût de vos charges de travail en réservant des ressources inutiles. |
Sous | Performances | Les charges de travail peuvent être ralenties ou ne plus répondre. | |
Non défini | Fiabilité | Le processeur peut être limité à 0, ce qui entraîne l'absence de réponse de vos charges de travail. | |
Mémoire | Plus de | Coût | Augmente le coût de vos charges de travail en réservant des ressources inutiles. |
Sous | Fiabilité | Peut entraîner l'arrêt des applications avec une erreur de mémoire insuffisante. | |
Non défini | Fiabilité | kubelet peut arrêter vos pods à tout moment et les marquer comme ayant échoué. |
Créer un dépôt
Créez le dépôt pour stocker l'image de l'exportateur de métriques.
Créez un dépôt Docker :
gcloud artifacts repositories create main --repository-format=docker \ --location=$REGION \ --description="docker repository"
Configurez l'authentification sur les dépôts Docker :
gcloud auth configure-docker $REGION-docker.pkg.dev
Déployez l'image en exécutant la commande suivante :
gcloud builds submit metrics-exporter --region=$REGION --tag $IMAGE
Déployer l'application
Dans la section suivante, vous allez utiliser Terraform pour effectuer les tâches suivantes :
- Créez un compte de service et attribuez les autorisations requises pour gérer les ressources Google Cloud et interagir avec elles.
- Attribuer au compte de service les rôles de lecteur Monitoring, d'éditeur de données BigQuery, de propriétaire de données BigQuery, d'utilisateur de job BigQuery et de demandeur Cloud Run.
- Déployer un job Cloud Run qui va extraire une image Docker d'Artifact Registry et l'exécuter avec la configuration spécifiée.
- Créer un job Cloud Scheduler qui déclenche quotidiennement le service Cloud Run.
- Créer un ensemble de données, une table et une vue BigQuery pour stocker les données et les recommandations de métriques.
Configurer Terraform
Définissez les variables d'environnement de configuration :
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
Cette commande inclut les éléments suivants :
TF_VAR_BIGQUERY_DATASET
etTF_VAR_BIGQUERY_TABLE
: contiennent les données de métrique GKE.TF_VAR_RECOMMENDATION_WINDOW_SECONDS
: délai des recommandations du VPA. La valeur par défaut est de 1 209 600 secondes, soit 14 jours.TF_VAR_RECOMMENDATION_DISTANCE
: intervalle auquel les points de données de la recommandation du VPA sont renvoyés. La valeur par défaut est de 86 400 secondes, soit tous les jours.TF_VAR_LATEST_WINDOW_SECONDS
: délai d'obtention des valeurs de demande les plus récentes et de limite de ressources. La valeur par défaut est de 600 secondes, soit 10 minutes.METRIC_WINDOW
: définit la période d'utilisation de GKE et des métriques. La valeur par défaut est de 259 200 secondes, soit 3 jours.METRIC_DISTANCE
: intervalle auquel les points de données sont renvoyés. La valeur par défaut est de 600 secondes, soit toutes les 10 minutes.
Ajustez ces valeurs en fonction des besoins de vos charges de travail. Par exemple, pour les charges de travail par lot exécutées une fois par mois, définissez
TF_VAR_RECOMMENDATION_WINDOW_SECONDS
etMETRIC_WINDOW
sur2592000
secondes (30 jours).
Déployer la configuration Terraform
Initialisez, validez et appliquez votre configuration :
terraform -chdir=terraform init terraform -chdir=terraform validate terraform -chdir=terraform apply -var project_id=$PROJECT_ID -var region=$REGION -var image=$IMAGE
Cette commande fournit un plan d'exécution et vous demande votre approbation avant d'apporter des modifications. Examinez le plan et, si tout se passe comme prévu, saisissez
yes
pour continuer.Une fois la commande d'application terminée, vos ressources sont créées et sont désormais gérées par Terraform.
Exécutez manuellement le job Cloud Scheduler :
gcloud scheduler jobs run recommendation-schedule --location ${REGION}
Vérifier le déploiement
Sélectionnez l'onglet Journaux sur la page d'informations
workload-recommendations
.Vérifiez que les journaux de métriques sont en cours de traitement dans la console Cloud Run :
Les journaux affichent les métriques en cours d'écriture dans BigQuery. La sortie devrait ressembler à ce qui suit :
INFO - Building Row INFO - Successfully wrote 12 rows to BigQuery table [PROJECT_ID].gke_metric_dataset.gke_metrics. INFO - Run Completed
Si la sortie ne correspond pas, attendez cinq minutes, puis exécutez la commande
gcloud scheduler jobs run recommendation-schedule --location $REGION
.
Afficher la recommandation de conteneur dans BigQuery
Accédez à la page BigQuery de la console Google Cloud :
Vérifiez que les données sont visibles dans la table
gke_metrics
et la vuecontainer_recommendations
. Selon le nombre de charges de travail, l'écriture de toutes les métriques dans BigQuery peut prendre quelques minutes.Dans l'éditeur de requête, sélectionnez toutes les lignes de la vue
container_recommendations
:SELECT * FROM `PROJECT_ID.gke_metrics_dataset.container_recommendations`
Ce programme extrait les métriques suivantes de Cloud Monitoring :
Détails de la charge de travail : ID du projet, nom du cluster, contrôleur et nom du conteneur.
Utilisation CPU/mémoire : quantité de ressources processeur et mémoire utilisées par la charge de travail, et pourcentage d'utilisation.
Demandées et limites : quantité de demande de ressources processeur et mémoire pour la charge de travail, et quantité maximale de ressources processeur et mémoire autorisée pour la charge de travail.
Recommandations CPU et mémoire de charge de travail : recommandations de quantité de ressources processeur et mémoire à allouer aux charges de travail pour garantir leur bon fonctionnement, en fonction des recommandations du VPA pour les déploiements et des utilisations réelles et cibles pour les objets hors déploiement.
Visualiser les recommandations dans Looker Studio
Looker Studio est une plate-forme d'informatique décisionnelle gratuite et en libre-service qui vous permet de créer et d'utiliser des visualisations de données, des tableaux de bord et des rapports. Avec Looker Studio, vous pouvez vous connecter à vos données, créer des visualisations et partager vos insights avec d'autres utilisateurs.
Utilisez Looker Studio pour visualiser les données de la vue BigQuery container_recommendations
:
- Ouvrez le modèle de tableau de bord de redimensionnement des charges de travail.
- Cliquez sur Utiliser mes propres données.
- Sélectionnez votre projet.
- Dans le champ "Ensemble de données", sélectionnez
gke_metric_dataset
. - Dans le champ "Table", sélectionnez
container_recommendations
. - Cliquez sur Ajouter.
- Cliquez sur Ajouter au rapport.
Détails du modèle Looker Studio
La page d'informations du modèle Looker Studio fournit les informations suivantes :
- Présentation du redimensionnement de charges de travail GKE : fournit une présentation de vos clusters, y compris :
- Nombre de charges de travail optimisées et extensibles pouvant présenter des problèmes de fiabilité et de performances.
- Économies potentielles de ressources liées au processeur et à la mémoire. Des valeurs positives indiquent un surprovisionnement, tandis que des valeurs négatives indiquent un sous-provisionnement.
- Recommandations de charges de travail : fournit des recommandations pour les demandes de CPU/mémoire et les limites de charge de travail.
- Charges de travail GKE à risque : affiche les charges de travail qui présentent le plus grand risque de rencontrer des problèmes de fiabilité et de performances.
- Historique - Redimensionnement des charges de travail - Évaluation : Fournit une vue historique du redimensionnement des charges de travail et de la réduction du nombre de charges de travail optimisées permettant d'évaluer l'efficacité de l'opération.
Recommandation de conteneur pour les demandes et limites de ressources processeur
Si les valeurs de la demande et de la limite de ressources processeur des charges de travail sont égales, la qualité de service est considérée comme garantie et la recommandation de processeur est définie sur la valeur maximale dans la période de 14 jours. Sinon, le 95e centile de la recommandation de demande de ressources processeur dans les 14 jours est utilisé.
Lorsque les valeurs de la demande et de la limite de ressources processeur sont égales, la recommandation de limite du processeur est définie sur la demande de ressources processeur spécifiée par la recommandation maximale du VPA, pour les objets de déploiement exclusivement, ainsi qu'une utilisation du processeur basée sur une utilisation cible de 70 %. Si la demande et la limite de la charge de travail ne sont pas identiques, le ratio de la limite existante est utilisé.
Recommandation de conteneur pour les demandes et limites de ressources mémoire
Pour garantir la fiabilité des charges de travail, les recommandations de mémoire utilisent la recommandation maximale du VPA, pour les objets de déploiement exclusivement, ainsi qu'une utilisation de mémoire maximale basée sur une utilisation cible de 80 %. Vous pouvez mettre à jour les valeurs d'utilisation cible dans la requête de la vue container_recommendation
.
Il est recommandé d'utiliser la même quantité de mémoire pour les demandes et les limites, car la mémoire est une ressource incompressible. Une fois la mémoire épuisée, le pod doit être supprimé. Afin d'éviter la suppression des pods (ainsi qu'un environnement instable), la mémoire demandée doit correspondre à la limite de mémoire.
Hiérarchiser les recommandations
Une valeur de priorité est attribuée à chaque ligne pour afficher les charges de travail qui nécessitent une attention immédiate en fonction des recommandations. Les unités de processeur et de mémoire sont différentes. Pour normaliser les unités, le ratio du prix à la demande du type de machine E2 entre le processeur et la mémoire prédéfinis est utilisé comme approximation pour convertir les unités de mémoire en unités de processeur.
La priorité est calculée à l'aide de la formule suivante :
priority = (CPU requested - CPU recommendation) + ((memory requested -
memory recommendation) / (vCPUs on-demand pricing /memory on-demand pricing ))
Pour Autopilot, le nombre total des ressources demandées par votre configuration de déploiement doit être inférieur aux valeurs minimales et maximales autorisées.
Afficher les recommandations du VPA pour plusieurs projets
Pour afficher les recommandations de conteneurs du VPA pour plusieurs projets, utilisez un nouveau projet en tant que projet effectuant une surveillance.
Lorsque vous déployez ce projet dans votre environnement de production, ajoutez tous les projets que vous souhaitez analyser au champ d'application des métriques du nouveau projet.