Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Resource profiling for container configuration recommendations

Dernière mise à jour :Aug 12, 2026

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

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Cost Suite > Cost Optimization.

  3. 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.

      Remarque

      Si 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.

  4. Cliquez sur Enable Resource Profiling pour accéder à la page Resource Profiling.

Étape 2 : Gérer les politiques de profilage

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Cost Suite > Cost Optimization.

  3. 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.Resource buffer

É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.

Remarque

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.

  • Collecte en cours : Le profil vient d'être créé et les données sont insuffisantes. Nous vous recommandons de patienter au moins une journée pour garantir que la charge de travail fonctionne de manière stable et que ses données couvrent à la fois les pics et les creux de trafic.

  • Normal : Les résultats de profilage ont été générés.

  • Charge de travail supprimée : La charge de travail a été supprimée. Les résultats de profilage sont automatiquement supprimés après une période de rétention.

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.

    1. 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).

    2. Calculez l'écart (Degree) entre la requête de ressources initiale (Request) et la spécification de ressources cible (Target) : Degree = 1 - (Request / Target).

    3. 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

    1. Créez un fichier nommé recommendation-profile.yaml avec 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:
        - default

      Le tableau suivant décrit les champs de configuration.

      Paramètre

      Type

      Description

      metadata.name

      String

      Le nom de l'objet. Un namespace n'est pas requis car RecommendationProfile est un objet de portée cluster (non namespacé).

      spec.controllerKind

      String

      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.enabledNamespaces

      String

      Les namespaces pour lesquels le profilage des ressources est activé.

    2. Appliquez la configuration de profilage.

      kubectl apply -f recommendation-profile.yaml
    3. Créez un fichier nommé cpu-load-gen.yaml avec 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"
    4. Déployez l'application cpu-load-gen.

      kubectl apply -f cpu-load-gen.yaml
    5. 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 yaml

      ack-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-apiVersion

      La 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-kind

      Le type de la charge de travail, tel que Deployment ou StatefulSet.

      Deployment

      alpha.alibabacloud.com/recommendation-workload-name

      Le 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

      containerName

      Le nom du conteneur.

      string

      cpu-load-gen

      target

      Les spécifications de ressources profilées, y compris le CPU et la mémoire.

      map[ResourceName]resource.Quantity

      cpu: 4742m

      memory: 262144k

      originalTarget

      Un résultat intermédiaire de l'algorithme de profilage. N'utilisez pas ce champ directement.

      -

      -

      Remarque

      La 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-gen avec 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 :

      1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

      2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Operations > Prometheus Monitoring.

      3. Sur la page Prometheus Monitoring, choisissez Cost Analysis/Resource Optimization > Resource Profile.

        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"}
      Important

      La métrique de profilage des ressources fournie par le composant ack-koordinator a été renommée en koord_manager_recommender_recommendation_workload_target dans la version v1.5.0-ack1.14. Cependant, la métrique slo_manager_recommender_recommendation_workload_target des versions antérieures reste compatible. Si vous disposez d'une instance Prometheus autogérée, passez à koord_manager_recommender_recommendation_workload_target aprè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.

    1. Obtenez l'adresse IP du pod.

      kubectl get pod -A -o wide | grep koord-manager

      Sortie 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>
    2. 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_target

      Sortie 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 :

    1. 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.

    2. Autorisation RBAC

      Après avoir terminé l'autorisation RAM, accordez à l'utilisateur RAM le rôle developer ou supérieur dans le cluster cible. Pour obtenir des instructions, consultez Utiliser le RBAC pour autoriser les opérations sur les ressources du cluster.

    Remarque

    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:
      - "*"