3.10. Comprendre comment ajouter des métriques personnalisées autoscalers


Afin d’ajouter un programmeur automatique de mesures personnalisées, créez une ressource personnalisée ScaledObject pour un déploiement, un ensemble d’état ou une ressource personnalisée. Créez une ressource personnalisée ScaledJob pour un travail.

Il est possible de créer un seul objet à l’échelle pour chaque charge de travail que vous souhaitez mettre à l’échelle. En outre, vous ne pouvez pas utiliser un objet mis à l’échelle et le pod horizontal autoscaler (HPA) sur la même charge de travail.

Il est possible de créer un programmeur automatique de mesures personnalisées pour une charge de travail créée par un objet de déploiement, StatefulSet ou une ressource personnalisée.

Conditions préalables

  • Le Custom Metrics Autoscaler Operator doit être installé.
  • B) Si vous utilisez un autoscaleur de mesures personnalisées pour la mise à l’échelle basée sur CPU ou mémoire:

    • L’administrateur de votre cluster doit avoir des métriques de cluster correctement configurées. La commande PodMetrics <pod-name> permet de déterminer si les métriques sont configurées. Lorsque les métriques sont configurées, la sortie apparaît similaire à ce qui suit, avec CPU et mémoire affichés sous Utilisation.

      $ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      Name:         openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
      Namespace:    openshift-kube-scheduler
      Labels:       <none>
      Annotations:  <none>
      API Version:  metrics.k8s.io/v1beta1
      Containers:
        Name:  wait-for-host-port
        Usage:
          Memory:  0
        Name:      scheduler
        Usage:
          Cpu:     8m
          Memory:  45440Ki
      Kind:        PodMetrics
      Metadata:
        Creation Timestamp:  2019-05-23T18:47:56Z
        Self Link:           /apis/metrics.k8s.io/v1beta1/namespaces/openshift-kube-scheduler/pods/openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
      Timestamp:             2019-05-23T18:47:56Z
      Window:                1m0s
      Events:                <none>
      Copy to Clipboard Toggle word wrap

    • Les pods associés à l’objet que vous souhaitez mettre à l’échelle doivent inclure des limites de mémoire et de CPU spécifiées. À titre d’exemple:

      Exemple pod spec

      apiVersion: v1
      kind: Pod
      # ...
      spec:
        containers:
        - name: app
          image: images.my-company.example/app:v4
          resources:
            limits:
              memory: "128Mi"
              cpu: "500m"
      # ...
      Copy to Clipboard Toggle word wrap

Procédure

  1. Créez un fichier YAML similaire à ce qui suit. Le nom &lt;2&gt;, le nom de l’objet &lt;4&gt; et le type d’objet &lt;5&gt; sont seulement requis:

    Exemple d’objet mis à l’échelle

    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      annotations:
        autoscaling.keda.sh/paused-replicas: "0" 
    1
    
      name: scaledobject 
    2
    
      namespace: my-namespace
    spec:
      scaleTargetRef:
        apiVersion: apps/v1 
    3
    
        name: example-deployment 
    4
    
        kind: Deployment 
    5
    
        envSourceContainerName: .spec.template.spec.containers[0] 
    6
    
      cooldownPeriod:  200 
    7
    
      maxReplicaCount: 100 
    8
    
      minReplicaCount: 0 
    9
    
      metricsServer: 
    10
    
        auditConfig:
          logFormat: "json"
          logOutputVolumeClaim: "persistentVolumeClaimName"
          policy:
            rules:
            - level: Metadata
            omitStages: "RequestReceived"
            omitManagedFields: false
          lifetime:
            maxAge: "2"
            maxBackup: "1"
            maxSize: "50"
      fallback: 
    11
    
        failureThreshold: 3
        replicas: 6
      pollingInterval: 30 
    12
    
      advanced:
        restoreToOriginalReplicaCount: false 
    13
    
        horizontalPodAutoscalerConfig:
          name: keda-hpa-scale-down 
    14
    
          behavior: 
    15
    
            scaleDown:
              stabilizationWindowSeconds: 300
              policies:
              - type: Percent
                value: 100
                periodSeconds: 15
      triggers:
      - type: prometheus 
    16
    
        metadata:
          serverAddress: https://thanos-querier.openshift-monitoring.svc.cluster.local:9092
          namespace: kedatest
          metricName: http_requests_total
          threshold: '5'
          query: sum(rate(http_requests_total{job="test-app"}[1m]))
          authModes: basic
        authenticationRef: 
    17
    
          name: prom-triggerauthentication
          kind: TriggerAuthentication
    Copy to Clipboard Toggle word wrap

    1
    Facultatif : Spécifie que le Custom Metrics Autoscaler Operator est de mettre à l’échelle les répliques à la valeur spécifiée et d’arrêter l’autoscaling, comme décrit dans la section "Pause les métriques personnalisées autoscaler pour une charge de travail".
    2
    Indique un nom pour cet autoscaleur de mesures personnalisées.
    3
    Facultatif : Spécifie la version API de la ressource cible. La valeur par défaut est apps/v1.
    4
    Indique le nom de l’objet que vous souhaitez mettre à l’échelle.
    5
    Indique le type de déploiement, StatefulSet ou CustomResource.
    6
    Facultatif: Spécifie le nom du conteneur dans la ressource cible, à partir de laquelle les métriques personnalisées autoscaler obtient des variables d’environnement contenant des secrets et ainsi de suite. La valeur par défaut est .spec.template.spec.containers[0].
    7
    En option. Indique la période en secondes à attendre après que le dernier déclencheur soit signalé avant de mettre à l’échelle le déploiement à 0 si le minReplicaCount est réglé sur 0. La valeur par défaut est 300.
    8
    Facultatif: Spécifie le nombre maximum de répliques lors de la mise à l’échelle. La valeur par défaut est 100.
    9
    Facultatif: Spécifie le nombre minimum de répliques lors de la mise à l’échelle.
    10
    Facultatif : Spécifie les paramètres des journaux d’audit tels que décrits dans la section « Configuring Audit logging ».
    11
    Facultatif: Spécifie le nombre de répliques à revenir si un échelleur ne parvient pas à obtenir des métriques de la source pour le nombre de fois défini par le paramètre failThreshold. Consultez la documentation KEDA pour plus d’informations sur le comportement de repli.
    12
    Facultatif: Spécifie l’intervalle en quelques secondes pour vérifier chaque déclencheur. La valeur par défaut est 30.
    13
    Facultatif : Spécifie s’il faut remonter la ressource cible au nombre de répliques d’origine après que l’objet mis à l’échelle a été supprimé. La valeur par défaut est false, ce qui maintient le nombre de répliques tel qu’il est lorsque l’objet mis à l’échelle est supprimé.
    14
    Facultatif: Spécifie un nom pour le pod horizontal autoscaler. La valeur par défaut est keda-hpa-{scaled-object-name}.
    15
    Facultatif: Spécifie une politique de mise à l’échelle à utiliser pour contrôler le taux pour mettre à l’échelle des pods vers le haut ou vers le bas, comme décrit dans la section « Politiques de mise à l’échelle ».
    16
    Indique le déclencheur à utiliser comme base de mise à l’échelle, comme décrit dans la section « Comprendre les déclencheurs automatiques de mesures personnalisées ». Cet exemple utilise Red Hat OpenShift Service sur la surveillance AWS.
    17
    Facultatif: Spécifie une authentification de déclencheur ou une authentification de déclenchement de cluster. En savoir plus, consultez Comprendre les métriques personnalisées autoscaler l’authentification dans la section Ressources supplémentaires.
    • Entrez TriggerAuthentication pour utiliser une authentification de déclenchement. C’est la valeur par défaut.
    • Entrez ClusterTriggerAuthentication pour utiliser une authentification de déclencheur de cluster.
  2. Créez les métriques personnalisées autoscaler en exécutant la commande suivante:

    $ oc create -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

La vérification

  • Afficher la sortie de commande pour vérifier que l’autoscaler des métriques personnalisées a été créé:

    $ oc get scaledobject <scaled_object_name>
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    NAME            SCALETARGETKIND      SCALETARGETNAME        MIN   MAX   TRIGGERS     AUTHENTICATION               READY   ACTIVE   FALLBACK   AGE
    scaledobject    apps/v1.Deployment   example-deployment     0     50    prometheus   prom-triggerauthentication   True    True     True       17s
    Copy to Clipboard Toggle word wrap

    A noter les champs suivants dans la sortie:

    • TRIGGERS: Indique le déclencheur, ou l’échelle, qui est utilisé.
    • AUTHENTICATION : Indique le nom de toute authentification de déclenchement utilisée.
    • LIRE: Indique si l’objet mis à l’échelle est prêt à commencer la mise à l’échelle:

      • Dans l’affirmative, l’objet mis à l’échelle est prêt.
      • En cas de faux, l’objet mis à l’échelle n’est pas prêt en raison d’un problème dans un ou plusieurs des objets que vous avez créés.
    • ACTIVE: Indique si la mise à l’échelle a lieu:

      • Et si c’est vrai, l’échelle est en cours.
      • Dans le cas de False, la mise à l’échelle n’a pas lieu parce qu’il n’y a pas de mesures ou qu’il y a un problème dans un ou plusieurs des objets que vous avez créés.
    • FALLBACK: Indique si l’échelleur automatique de mesures personnalisées est capable d’obtenir des métriques à partir de la source

      • Dans le cas de False, l’autoscaleur de mesures personnalisées obtient des métriques.
      • Dans le cas de True, l’autoscaler des métriques personnalisées obtient des métriques parce qu’il n’y a pas de métriques ou qu’il y a un problème dans un ou plusieurs des objets que vous avez créés.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat