ACK propose une fonctionnalité de profilage des ressources pour les charges de travail natives Kubernetes. Cette fonctionnalité analyse l'historique d'utilisation des ressources afin de fournir des recommandations de spécifications au niveau du conteneur, ce qui simplifie la configuration des requêtes et limites des conteneurs. Cette rubrique explique comment utiliser le profilage des ressources depuis la console et en ligne de commande.
Prérequis et notes d'utilisation
-
Cette fonctionnalité est uniquement disponible pour les clusters ACK Pro répondant aux exigences suivantes :
Le composant ack-koordinator (anciennement ack-slo-manager) v0.7.1 ou ultérieure est installé. Pour plus d'informations, consultez ack-koordinator.
Le composant metrics-server v0.3.8 ou ultérieur est installé.
Si un nœud utilise containerd comme environnement d'exécution de conteneurs et a été ajouté au cluster avant le 19 janvier 2022 à 14h00, vous devez réajouter ce nœud ou mettre à niveau le cluster vers la version la plus récente. Pour plus d'informations, consultez Ajouter un nœud existant et Mettre à niveau manuellement un cluster.
La fonctionnalité de profilage des ressources est disponible en préversion publique dans Cost Suite et peut être utilisée directement.
Pour garantir des résultats de profilage précis, patientez au moins 24 heures après l'activation du profilage des ressources pour une charge de travail. Ce délai permet au système de collecter suffisamment de données.
Facturation
L'installation et l'utilisation du composant ack-koordinator sont gratuites. Toutefois, des frais supplémentaires peuvent s'appliquer dans les scénarios suivants.
ack-koordinator est un composant autogéré. Une fois installé, il consomme des ressources sur les nœuds worker. Vous pouvez configurer les requêtes de ressources pour chaque module lors de l'installation du composant.
Par défaut, ack-koordinator expose des métriques de surveillance pour des fonctionnalités telles que le profilage des ressources et la planification fine au format Prometheus. Si vous activez l'option Enable Prometheus Monitoring for ACK-Koordinator et utilisez Managed Service for Prometheus, ces métriques sont transmises à Managed Service for Prometheus en tant que métriques de base. La modification des paramètres par défaut, tels que la période de rétention, peut entraîner des frais supplémentaires. Pour plus d'informations, consultez Facturation de Managed Service for Prometheus.
Profilage des ressources
Kubernetes utilise des requêtes de ressources pour décrire les besoins en ressources des conteneurs. Lorsque vous définissez une requête de ressources pour un conteneur, le planificateur fait correspondre cette requête avec les ressources allouables des nœuds afin de placer le pod sur un nœud approprié. Dans la plupart des cas, les requêtes de ressources sont définies de manière empirique. Les administrateurs examinent l'historique d'utilisation, les résultats des tests de charge et les retours de production, puis ajustent les valeurs au fil du temps.
Cependant, cette approche présente les limites suivantes :
Pour maintenir la stabilité des applications en production, les administrateurs réservent souvent une marge de ressources importante afin d'absorber les fluctuations de trafic entre les dépendances en amont et en aval. Par conséquent, les requêtes de ressources des conteneurs sont définies bien au-dessus de l'utilisation réelle, ce qui entraîne une faible utilisation des ressources du cluster et un gaspillage significatif.
Lorsque l'allocation du cluster est élevée, les administrateurs peuvent réduire les requêtes de ressources pour améliorer l'utilisation du cluster et libérer de la capacité. Cela augmente la densité des conteneurs et peut compromettre la stabilité du cluster lorsque le trafic applicatif augmente.
Pour résoudre ces problèmes, ack-koordinator fournit la fonctionnalité de profilage des ressources. Elle recommande des spécifications de ressources au niveau du conteneur et réduit la complexité de configuration des conteneurs. ACK propose cette fonctionnalité dans la console, permettant aux administrateurs d'applications d'évaluer rapidement si les spécifications actuelles sont adéquates et de les ajuster si nécessaire. Vous pouvez également utiliser la ligne de commande pour gérer directement les profils de ressources des applications via un CRD.
Utiliser le profilage des ressources dans la console
Étape 1 : Installer et activer le profilage des ressources
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Sur la page Cost Optimization, cliquez sur l'onglet Resource Profiling. Dans la section Resource Profiling, suivez les instructions à l'écran pour activer la fonctionnalité.
-
Installation ou mise à niveau du composant : Suivez les instructions à l'écran pour installer ou mettre à niveau le composant ack-koordinator. Si vous utilisez cette fonctionnalité pour la première fois, vous devez installer le composant ack-koordinator.
RemarqueSi votre composant ack-koordinator est antérieur à la version v0.7.0, vous devez le migrer et le mettre à niveau. Pour plus d'informations, consultez Migrer ack-koordinator depuis la place de marché des applications vers le centre de composants.
Configuration du profilage : Après l'installation ou la mise à niveau, sélectionnez Default Settings pour contrôler la portée du profilage (recommandé). Vous pourrez également cliquer sur Profiling Configuration dans la console ultérieurement pour ajuster les paramètres.
-
Cliquez sur Enable Resource Profiling pour accéder à la page Resource Profiling.
Étape 2 : Gérer les politiques de profilage
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Sur la page Cost Optimization, cliquez sur l'onglet Resource Profiling, puis cliquez sur Profiling Configuration.
Deux modes de configuration sont disponibles : Global Configuration et Automated O&M mode. Le mode par défaut recommandé lors de l'installation du composant est Global Configuration. Vous pouvez modifier le mode et les paramètres ici, puis cliquez sur OK pour appliquer les changements.
Configuration globale (recommandée)
Le mode Global Configuration active le profilage des ressources pour toutes les charges de travail. Par défaut, il exclut les namespaces arms-prom et kube-system.
Paramètre
Description
Plage de valeurs
Excluded Namespace
Les namespaces pour lesquels le profilage des ressources est désactivé, généralement ceux des composants système. La portée finale du profilage correspond à l'intersection des namespaces et des types de charges de travail spécifiés.
Namespaces existants dans le cluster actuel. Vous pouvez sélectionner plusieurs namespaces. Valeur par défaut : kube-system et arms-prom.
Workload Type
Les types de charges de travail pour lesquels le profilage des ressources est activé. La portée finale du profilage correspond à l'intersection des namespaces et des types de charges de travail spécifiés.
Les charges de travail natives Kubernetes prises en charge sont Deployment, StatefulSet et DaemonSet. Vous pouvez sélectionner plusieurs types de charges de travail.
CPU Redundancy Rate
La marge de sécurité pour la génération des résultats de profilage des ressources. Pour plus de détails, voir la description ci-dessous.
Un nombre non négatif. Les options courantes sont 70 %, 50 % et 30 %.
Memory Redundancy Rate
La marge de sécurité pour la génération des résultats de profilage des ressources. Pour plus de détails, voir la description ci-dessous.
Un nombre non négatif. Les options courantes sont 70 %, 50 % et 30 %.
Configuration O&M automatisée
Le mode Automated O&M active le profilage des ressources uniquement pour les charges de travail situées dans les namespaces sélectionnés. Si votre cluster est volumineux (par exemple, avec plus de 1 000 nœuds) ou si vous souhaitez tester cette fonctionnalité sur un sous-ensemble de charges de travail, utilisez ce mode pour spécifier la portée selon vos besoins.
Paramètre
Description
Plage de valeurs
Namespace
Les namespaces pour lesquels le profilage des ressources est activé. La portée finale du profilage correspond à l'intersection des namespaces et des types de charges de travail spécifiés.
Namespaces existants dans le cluster actuel. Vous pouvez sélectionner plusieurs namespaces.
Workload Type
Les types de charges de travail pour lesquels le profilage des ressources est activé. La portée finale du profilage correspond à l'intersection des namespaces et des types de charges de travail spécifiés.
Les charges de travail natives Kubernetes prises en charge sont Deployment, StatefulSet et DaemonSet. Vous pouvez sélectionner plusieurs types de charges de travail.
CPU Redundancy Rate
La marge de sécurité pour la génération des résultats de profilage des ressources. Pour plus de détails, voir la description ci-dessous.
Un nombre non négatif. Les options courantes sont 70 %, 50 % et 30 %.
Memory Redundancy Rate
La marge de sécurité pour la génération des résultats de profilage des ressources. Pour plus de détails, voir la description ci-dessous.
Un nombre non négatif. Les options courantes sont 70 %, 50 % et 30 %.
Une marge de consommation des ressources consiste à ne pas utiliser 100 % des ressources physiques lorsque les administrateurs évaluent la capacité d'une application, telle que le nombre de requêtes par seconde (QPS). Cela s'explique à la fois par les limites des ressources physiques, comme l'hyper-threading, et par la nécessité pour les applications de réserver des ressources afin de traiter les pics de charge. Si l'écart entre la valeur profilée et la requête de ressources initiale dépasse la marge de sécurité, une recommandation de réduction est fournie. Pour plus de détails sur l'algorithme, consultez la description des recommandations de profilage dans la rubrique Vue d'ensemble du profilage des applications.

Étape 3 : Consulter la vue d'ensemble du profilage
Après avoir configuré la politique de profilage des ressources, vous pouvez consulter les résultats de profilage pour chaque charge de travail sur la page Resource Profiling.
Pour améliorer la précision, le système vous invite à collecter au moins 24 heures de données lors de la première utilisation de cette fonctionnalité.
Le tableau suivant décrit les colonnes de la vue d'ensemble du profilage.
Dans le tableau suivant, un tiret (-) indique que le champ n'est pas applicable.
|
Colonne |
Description |
Valeurs |
Filtrable |
|
Nom de la charge de travail |
Le nom de la charge de travail. |
- |
Oui. Recherche exacte par nom possible en haut de la page. |
|
Namespace |
Le namespace de la charge de travail. |
- |
Oui. Par défaut, le namespace kube-system est exclu des conditions de filtrage. |
|
Type de charge de travail |
Le type de la charge de travail. |
Deployment, DaemonSet et StatefulSet. |
Oui. Le filtre par défaut est All. |
|
Requête CPU |
La requête de ressources CPU des pods de la charge de travail. |
- |
Non. |
|
Requête mémoire |
La requête de ressources mémoire des pods de la charge de travail. |
- |
Non. |
|
État des données de profilage |
L'état du profilage des ressources pour la charge de travail. |
|
Non. |
|
Profil CPU, profil mémoire |
Une recommandation basée sur la valeur profilée, la requête de ressources initiale et la marge de consommation des ressources configurée. |
Comprend Upgrade, Downgrade et Keep. Le pourcentage indique l'amplitude de l'écart, calculée selon la formule suivante : |
Oui. Les conditions de filtrage par défaut sont Upgrade et Downgrade. |
|
Heure de création |
L'heure à laquelle le résultat de profilage a été créé. |
- |
Non. |
|
Modifier la configuration des ressources |
Après avoir évalué les résultats et les recommandations de profilage, cliquez sur Change Resource Configuration pour augmenter ou réduire les ressources. Pour plus d'informations, consultez Étape 5 : Appliquer les spécifications de ressources recommandées. |
- |
Non. |
Le profilage des ressources ACK génère une valeur profilée pour la spécification de ressources de chaque conteneur d'une charge de travail. En comparant la valeur profilée (Recommend), la requête de ressources initiale (Request) et la marge de consommation des ressources (Buffer) configurée dans la politique de profilage, la console fournit des recommandations d'augmentation (Upgrade) ou de réduction (Downgrade) pour la requête de ressources. Si une charge de travail contient plusieurs conteneurs, la console met en évidence celui présentant l'écart le plus important. La logique de calcul est la suivante.
Si la valeur profilée (Recommend) est supérieure à la requête de ressources initiale (Request), le conteneur a consommé excessivement des ressources pendant une période prolongée (l'utilisation dépasse la requête). Cela pose un risque de stabilité. Augmentez la spécification de ressources en temps opportun. La console affiche une recommandation « Upgrade ».
-
Si la valeur profilée (Recommend) est inférieure à la requête de ressources initiale (Request), le conteneur gaspille potentiellement des ressources et vous pouvez réduire la spécification. Cette décision doit prendre en compte la marge de consommation des ressources configurée.
Calculez la spécification de ressources cible (Target) en fonction de la valeur profilée et de la marge de consommation des ressources configurée (Buffer) : Target = Recommend * (1 + Buffer).
Calculez l'écart (Degree) entre la requête de ressources initiale (Request) et la spécification de ressources cible (Target) : Degree = 1 - (Request / Target).
En fonction de la valeur profilée et du niveau d'écart (Degree), la console génère une recommandation pour le CPU et la mémoire. Si la valeur absolue de l'écart (Degree) est supérieure à 0,1, la console affiche une recommandation « Downgrade ».
Dans tous les autres cas, la recommandation est de Maintain la spécification de ressources actuelle, ce qui indique qu'aucun ajustement n'est nécessaire.
Étape 4 : Consulter les détails du profil d'application
Sur la page Resource Profiling, cliquez sur le nom d'une charge de travail pour ouvrir sa page de détails de profil.
La page de détails comprend trois parties : les informations de base sur la charge de travail, les courbes de profil de ressources pour chaque conteneur et une fenêtre permettant de modifier les spécifications de ressources de l'application.
Comme illustré dans la figure précédente, le tableau suivant décrit les métriques de la courbe de ressources, en prenant le CPU comme exemple.
|
Nom de la courbe |
Description |
|
cpu limit |
La limite de ressources CPU du conteneur. |
|
cpu request |
La requête de ressources CPU du conteneur. |
|
cpu recommend |
La valeur CPU profilée pour le conteneur. |
|
cpu usage (average) |
L'utilisation moyenne du CPU sur tous les réplicas de conteneurs de la charge de travail. |
|
cpu usage (max) |
L'utilisation maximale du CPU parmi tous les réplicas de conteneurs de la charge de travail. |
Étape 5 : Appliquer les spécifications de ressources recommandées
Vous pouvez utiliser la marge de sécurité configurée comme référence pour le besoin en ressources cible. Par exemple, vous pouvez ajouter un facteur de marge à la valeur profilée, tel que 4,742 * 1,3 ≈ 6,2.
Le tableau suivant décrit les paramètres.
|
Paramètre |
Description |
|
Requête de ressources actuelle |
La requête de ressources actuelle du conteneur. |
|
Limite de ressources actuelle |
La limite de ressources actuelle du conteneur. |
|
Valeur profilée |
La valeur profilée générée pour le conteneur, pouvant servir de référence pour la requête de ressources. |
|
Marge de sécurité |
La marge de sécurité configurée dans la politique de profilage, pouvant servir de référence pour le besoin en ressources cible. Par exemple, vous pouvez ajouter un facteur de marge à la valeur profilée, tel que 4,742 * 1,3 ≈ 6,2. |
|
Nouvelle requête de ressources |
La valeur cible pour la requête de ressources du conteneur. |
|
Nouvelle limite de ressources |
La valeur cible pour la limite de ressources du conteneur. Remarque : Si la charge de travail utilise la planification sensible à la topologie CPU, la limite de ressources CPU doit être un entier. |
Une fois la configuration terminée, cliquez sur Submit. Le système met à jour les spécifications de ressources et vous redirige automatiquement vers la page de détails de la charge de travail.
Après la mise à jour des spécifications de ressources, le contrôleur effectue une mise à jour progressive de la charge de travail et recrée ses pods.
Utiliser le profilage des ressources en ligne de commande
Étape 1 : Activer le profilage des ressources
-
Créez un fichier nommé
recommendation-profile.yamlavec le contenu YAML suivant pour activer le profilage des ressources pour une charge de travail.Un CRD RecommendationProfile active le profilage des ressources pour une charge de travail et fournit des données de spécification de ressources pour ses conteneurs. Vous pouvez contrôler la portée du profilage en spécifiant des namespaces et des types de charges de travail. La portée finale correspond à l'intersection des deux.
apiVersion: autoscaling.alibabacloud.com/v1alpha1 kind: RecommendationProfile metadata: # The object name. A namespace is not required for this cluster-scoped object. name: profile-demo spec: # The workload types for which to enable resource profiling. controllerKind: - Deployment # The namespaces for which to enable resource profiling. enabledNamespaces: - defaultLe tableau suivant décrit les champs de configuration.
Paramètre
Type
Description
metadata.nameString
Le nom de l'objet. Un namespace n'est pas requis car RecommendationProfile est un objet de portée cluster (non namespacé).
spec.controllerKindString
Les types de charges de travail pour lesquels le profilage des ressources est activé. Les types pris en charge incluent Deployment, StatefulSet et DaemonSet.
spec.enabledNamespacesString
Les namespaces pour lesquels le profilage des ressources est activé.
-
Appliquez la configuration de profilage.
kubectl apply -f recommendation-profile.yaml -
Créez un fichier nommé
cpu-load-gen.yamlavec le contenu suivant.apiVersion: apps/v1 kind: Deployment metadata: name: cpu-load-gen labels: app: cpu-load-gen spec: replicas: 2 selector: matchLabels: app: cpu-load-gen-selector template: metadata: labels: app: cpu-load-gen-selector spec: containers: - name: cpu-load-gen image: registry.cn-zhangjiakou.aliyuncs.com/acs/slo-test-cpu-load-gen:v0.1 command: ["cpu_load_gen.sh"] imagePullPolicy: Always resources: requests: cpu: 8 # The CPU request for this application is 8 cores. memory: "1Gi" limits: cpu: 12 memory: "2Gi" -
Déployez l'application cpu-load-gen.
kubectl apply -f cpu-load-gen.yaml -
Obtenez les résultats de profilage des ressources.
kubectl get recommendations -l \ "alpha.alibabacloud.com/recommendation-workload-apiVersion=apps-v1, \ alpha.alibabacloud.com/recommendation-workload-kind=Deployment, \ alpha.alibabacloud.com/recommendation-workload-name=cpu-load-gen" -o yamlack-koordinator génère un profil de ressources pour chaque charge de travail profilée et stocke les résultats dans un CRD Recommendation. Voici un exemple de profil de ressources pour la charge de travail
cpu-load-gen.apiVersion: autoscaling.alibabacloud.com/v1alpha1 kind: Recommendation metadata: labels: alpha.alibabacloud.com/recommendation-workload-apiVersion: apps-v1 alpha.alibabacloud.com/recommendation-workload-kind: Deployment alpha.alibabacloud.com/recommendation-workload-name: cpu-load-gen name: f20ac0b3-dc7f-4f47-b3d9-bd91f906**** namespace: recommender-demo spec: workloadRef: apiVersion: apps/v1 kind: Deployment name: cpu-load-gen status: recommendResources: containerRecommendations: - containerName: cpu-load-gen target: cpu: 4742m memory: 262144k originalTarget: # Intermediate result of the resource profiling algorithm. Do not use directly. # ...Pour simplifier la récupération, l'objet Recommendation est créé dans le même namespace que la charge de travail. Il inclut également des libellés spécifiant la version de l'API, le type et le nom de la charge de travail, comme décrit dans le tableau suivant.
Clé de libellé
Description
Exemple
alpha.alibabacloud.com/recommendation-workload-apiVersionLa version de l'API de la charge de travail. La barre oblique (/) est remplacée par un tiret (-) pour respecter la syntaxe des libellés Kubernetes.
apps-v1 (issu de apps/v1)
alpha.alibabacloud.com/recommendation-workload-kindLe type de la charge de travail, tel que Deployment ou StatefulSet.
Deployment
alpha.alibabacloud.com/recommendation-workload-nameLe nom de la charge de travail. Il ne doit pas dépasser 63 caractères pour respecter la syntaxe des libellés Kubernetes.
cpu-load-gen
Les résultats de profilage des ressources pour chaque conteneur sont stockés dans
status.recommendResources.containerRecommendations. Le tableau suivant décrit les champs.Champ
Description
Format
Exemple
containerNameLe nom du conteneur.
string
cpu-load-gen
targetLes spécifications de ressources profilées, y compris le CPU et la mémoire.
map[ResourceName]resource.Quantity
cpu: 4742m
memory: 262144k
originalTargetUn résultat intermédiaire de l'algorithme de profilage. N'utilisez pas ce champ directement.
-
-
RemarqueLa valeur CPU profilée minimale par pod est de 0,025 cœur et la valeur mémoire minimale est de 250 Mo.
En comparant les spécifications de ressources déclarées dans l'application
cpu-load-genavec les résultats de profilage, vous pouvez constater que la requête CPU est surdimensionnée. Réduisez la requête pour économiser les ressources du cluster.Catégorie
Spécification initiale
Spécification profilée
CPU
8 cœurs
4,742 cœurs
Étape 2 : (Facultatif) Consulter les résultats dans Prometheus
Le composant ack-koordinator fournit une interface de requête Prometheus pour les résultats de profilage des ressources. Vous pouvez consulter ces résultats directement via la fonctionnalité Prometheus Monitoring dans ACK.
-
Si vous utilisez ce tableau de bord pour la première fois, assurez-vous que le tableau de bord Resource Profile est mis à jour vers la dernière version. Pour les étapes de mise à niveau, consultez Opérations associées.
Pour consulter les résultats de profilage des ressources dans la console ACK via Prometheus Monitoring, procédez comme suit :
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Sur la page Prometheus Monitoring, choisissez .
Dans l'onglet Resource Profile, consultez les données détaillées, y compris les spécifications des conteneurs (Request), l'utilisation réelle des ressources des conteneurs (Usage) et les spécifications de ressources profilées des conteneurs (Recommend). Pour plus d'informations, consultez Se connecter et configurer Managed Service for Prometheus.
-
Si vous disposez d'une instance Prometheus autogérée, configurez votre tableau de bord en fonction des métriques suivantes.
# Profiled CPU resource specification for a container in the workload. koord_manager_recommender_recommendation_workload_target{exported_namespace="$namespace", workload_name="$workload", container_name="$container", resource="cpu"} # Profiled memory resource specification for a container in the workload. koord_manager_recommender_recommendation_workload_target{exported_namespace="$namespace", workload_name="$workload", container_name="$container", resource="memory"}ImportantLa métrique de profilage des ressources fournie par le composant ack-koordinator a été renommée en
koord_manager_recommender_recommendation_workload_targetdans la version v1.5.0-ack1.14. Cependant, la métriqueslo_manager_recommender_recommendation_workload_targetdes versions antérieures reste compatible. Si vous disposez d'une instance Prometheus autogérée, passez àkoord_manager_recommender_recommendation_workload_targetaprès avoir mis à niveau le composant ack-koordinator vers la version v1.5.0-ack1.14 ou ultérieure.
FAQ
Algorithme de profilage des ressources
L'algorithme de profilage des ressources utilise un modèle de données multidimensionnel qui fonctionne comme suit :
Il collecte en continu les données d'utilisation des ressources des conteneurs et calcule des statistiques agrégées, telles que les valeurs de crête, les moyennes pondérées et les percentiles pour l'utilisation du CPU et de la mémoire.
La recommandation finale fixe la valeur CPU recommandée au percentile P95 et la valeur mémoire recommandée au percentile P99. L'algorithme ajoute une marge de sécurité aux deux pour garantir la fiabilité de la charge de travail.
L'algorithme est optimisé pour la réactivité et ne prend en compte que les données des 14 derniers jours. Il utilise un modèle de fenêtre glissante à demi-vie pour l'agrégation, où le poids des points de données plus anciens diminue progressivement.
L'algorithme prend en compte les événements d'exécution des conteneurs, tels que les arrêts pour manque de mémoire (OOM), afin d'améliorer la précision des valeurs profilées.
Types d'applications adaptés
Le profilage des ressources convient particulièrement aux applications de services en ligne.
Actuellement, les résultats de profilage privilégient la garantie que le conteneur dispose de ressources suffisantes pour couvrir la grande majorité de ses échantillons d'utilisation. Cependant, cette approche peut s'avérer conservatrice pour certains types d'applications. Pour les applications hors ligne, telles que les tâches de traitement par lots qui privilégient le débit global et peuvent tolérer une certaine contention des ressources pour améliorer l'utilisation du cluster, les résultats de profilage peuvent paraître trop prudents. De plus, pour les composants système critiques déployés dans une configuration actif-passif, les réplicas passifs restent inactifs pendant de longues périodes, et leur faible utilisation des ressources peut perturber l'algorithme de profilage. Pour ces scénarios, examinez et ajustez les résultats de profilage selon vos besoins avant de les appliquer. Nous vous recommandons de rester informé des mises à jour du produit concernant le profilage des ressources.
Utiliser les valeurs profilées pour les requêtes et les limites
Cela dépend de votre charge de travail spécifique. Les valeurs profilées fournissent un résumé de la demande actuelle en ressources de votre application. Utilisez-les comme base de référence et ajustez-les en fonction des caractéristiques de votre application et de vos besoins métier.
Par exemple, pour les applications devant gérer des pics de trafic ou nécessitant un basculement transparent dans une architecture actif-actif, vous devez ajouter une marge de ressources. Pour les applications sensibles aux ressources qui ne fonctionnent pas bien sur des hôtes fortement chargés, augmentez également l'allocation de ressources au-delà de la valeur profilée.
Consulter les métriques dans une instance Prometheus autogérée
Le module ack-koord-manager du composant ack-koordinator expose les métriques de profilage des ressources sous forme d'endpoint HTTP au format Prometheus. Vous pouvez obtenir l'adresse IP du pod et accéder aux données des métriques.
-
Obtenez l'adresse IP du pod.
kubectl get pod -A -o wide | grep koord-managerSortie attendue :
kube-system ack-koord-manager-b86bd47d9-92f6m 1/1 Running 0 16h 10.10.0.xxx cn-hangzhou.10.10.0.xxx <none> <none> kube-system ack-koord-manager-b86bd47d9-vg5z7 1/1 Running 0 16h 10.10.0.xxx cn-hangzhou.10.10.0.xxx <none> <none> -
Exécutez la commande suivante pour consulter les données des métriques (notez que ack-koord-manager fonctionne en mode actif-passif à deux réplicas et que les données ne sont disponibles que sur le pod réplica principal). Pour le port
port(par défaut : 9326), reportez-vous à la configuration du Deployment ack-koord-manager.Assurez-vous que le serveur sur lequel vous exécutez la commande peut communiquer avec le réseau de conteneurs du cluster.
curl -s http://10.10.0.xxx:9326/all-metrics | grep slo_manager_recommender_recommendation_workload_target # If you use an ack-koordinator version earlier than v1.5.0-ack1.12, run the following command to view the metrics data. curl -s http://10.10.0.xxx:9326/metrics | grep slo_manager_recommender_recommendation_workload_targetSortie attendue :
# HELP slo_manager_recommender_recommendation_workload_target Recommendation of workload resource request. # TYPE slo_manager_recommender_recommendation_workload_target gauge slo_manager_recommender_recommendation_workload_target{container_name="xxx",namespace="xxx",recommendation_name="d2169dbf-fb36-4bf4-99d1-673577fb85c1",resource="cpu",workload_api_version="apps/v1",workload_kind="Deployment",workload_name="xxx"} 0.025 slo_manager_recommender_recommendation_workload_target{container_name="xxx",namespace="xxx",recommendation_name="d2169dbf-fb36-4bf4-99d1-673577fb85c1",resource="memory",workload_api_version="apps/v1",workload_kind="Deployment",workload_name="xxx"} 2.62144e+08
Une fois le composant ack-koordinator installé, il crée automatiquement des objets Service et ServiceMonitor associés aux pods correspondants. Si vous utilisez Managed Service for Prometheus, le service collecte et affiche automatiquement ces métriques sur le tableau de bord Grafana correspondant.
Prometheus prend en charge plusieurs méthodes de collecte. Si vous utilisez une instance Prometheus autogérée, consultez la documentation officielle de Prometheus pour la configuration et utilisez le processus décrit ci-dessus pour le débogage. Après le débogage, vous pouvez vous reporter à l'Étape 2 : (Facultatif) Consulter les résultats dans Prometheus pour configurer un tableau de bord Grafana dans votre environnement.
Supprimer les résultats et les règles de profilage
Les CRD Recommendation stockent les résultats de profilage et les CRD RecommendationProfile stockent les règles de profilage. Exécutez les commandes suivantes pour supprimer tous les résultats et toutes les règles.
# Delete all profiling results.
kubectl delete recommendation -A --all
# Delete all profiling rules.
kubectl delete recommendationprofile -A --all
Accorder des autorisations aux utilisateurs RAM
L'autorisation ACK comporte deux niveaux : l'autorisation RAM pour l'accès aux ressources de base et le RBAC (Role-Based Access Control) pour les permissions au sein du cluster. Pour une vue d'ensemble, consultez Meilleures pratiques d'autorisation. Pour accorder à un utilisateur RAM les permissions d'utiliser le profilage des ressources, vous devez configurer les permissions aux deux niveaux :
-
Autorisation RAM
Connectez-vous à la console RAM avec votre compte Alibaba Cloud et accordez la politique système intégrée AliyunCSFullAccess à l'utilisateur RAM. Pour des instructions détaillées, consultez Accorder des permissions.
-
Autorisation RBAC
Après avoir terminé l'autorisation RAM, accordez à l'utilisateur RAM le rôle
developerou supérieur dans le cluster cible. Pour obtenir des instructions, consultez Utiliser le RBAC pour autoriser les opérations sur les ressources du cluster.
Le rôle prédéfini developer accorde un accès en lecture et en écriture à toutes les ressources Kubernetes du cluster. Pour un contrôle plus granulaire, vous pouvez créer ou modifier un ClusterRole personnalisé en suivant les instructions dans Utiliser des rôles RBAC personnalisés pour restreindre les opérations sur les ressources dans un cluster. La fonctionnalité de profilage des ressources nécessite l'ajout des règles suivantes au ClusterRole :
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: recommendation-clusterrole
rules:
- apiGroups:
- "autoscaling.alibabacloud.com"
resources:
- "*"
verbs:
- "*"