DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Présentation de KEDA – DZone
    Uncategorized

    Présentation de KEDA – DZone

    février 9, 2023
    Présentation de KEDA - DZone
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    La mise à l’échelle manuelle devient lentement une chose du passé. Actuellement, l’autoscaling est la norme, et les organisations qui se déploient dans des clusters Kubernetes bénéficient de fonctionnalités d’autoscaling intégrées telles que HPA (Horizontal Pod Autoscaling) et VPA (Vertical Pod Autoscaling). Mais ces solutions ont des limites. Par exemple, il est difficile pour HPA de réduire le nombre de pods à zéro ou de (dé)dimensionner les pods en fonction de mesures autres que la mémoire ou l’utilisation du processeur. En conséquence, KEDA (Kubernetes Event-Driven Autoscaling) a été introduit pour relever certains de ces défis dans la mise à l’échelle automatique des charges de travail K8.

    Dans ce blog, nous allons nous plonger dans KEDA et discuter des points suivants :

    Qu’est-ce que KEDA ?
    Architecture et composants KEDA
    Installation et démonstration de KEDA
    Intégrer KEDA dans les pipelines CI/CD

    Qu’est-ce que KEDA ?

    KEDA est un autoscaler Kubernetes léger et open source basé sur les événements que les équipes DevOps, SRE et Ops utilisent pour faire évoluer les pods horizontalement en fonction d’événements ou de déclencheurs externes. KEDA aide à étendre la capacité des solutions d’autoscaling natives de Kubernetes, qui s’appuient sur des métriques de ressources standard telles que le processeur ou la mémoire. Vous pouvez déployer KEDA dans un cluster Kubernetes et gérer la mise à l’échelle des pods à l’aide de définitions de ressources personnalisées (CRD).

    Comparaison tabulaire entre différentes fonctionnalités d'autoscaling de Kubernetes : VPA, KEDA et HPATabulaire comparaison entre différentes fonctionnalités d'autoscaling de Kubernetes : VPA, KEDA et HPA
    Comparaison tabulaire entre les différentes fonctionnalités d’autoscaling de Kubernetes : VPA, KEDA et HPA
    Construit au-dessus de Kubernetes HPA, KEDA met à l’échelle les pods en fonction des informations provenant de sources d’événements telles qu’AWS SQS, Kafka, RabbitMQ, etc. Ces sources d’événements sont surveillées à l’aide de scalers, qui activent ou désactivent les déploiements en fonction des règles définies pour eux. Les scalers KEDA peuvent également alimenter des métriques personnalisées pour une source d’événement spécifique, aidant les équipes DevOps à observer les métriques qui les concernent.

    Quels problèmes KEDA résout-il ?

    KEDA aide les équipes SRE et DevOps à résoudre quelques problèmes importants :

    Libérer des ressources et réduire les coûts du cloud

    KEDA réduit le nombre de pods à zéro s’il n’y a aucun événement à traiter. C’est plus difficile à faire avec le HPA standard, et cela permet d’assurer une utilisation efficace des ressources et une optimisation des coûts, réduisant ainsi les factures du cloud.

    Interopérabilité avec la chaîne d’outils DevOps

    À l’heure actuelle, KEDA prend en charge 59 détartreurs intégrés et quatre détartreurs externes. Les scalers externes incluent KEDA HTTP, KEDA Scaler pour Oracle DB, etc. L’utilisation d’événements externes comme déclencheurs facilite une mise à l’échelle automatique efficace, en particulier pour les microservices basés sur des messages tels que les passerelles de paiement ou les systèmes de commande. De plus, comme KEDA peut être étendu en développant des intégrations avec n’importe quelle source de données, il peut facilement s’intégrer dans n’importe quelle chaîne d’outils DevOps.

    Interopérabilité KEDA
    Interopérabilité KEDA

    Architecture et composants KEDA

    Comme mentionné au début, KEDA et HPA travaillent ensemble pour réaliser l’autoscaling. Pour cette raison, KEDA n’a besoin que de quelques composants pour démarrer.

    Composants KEDA

    Reportez-vous à la figure A et laissez-nous explorer certains des composants de KEDA.

    Fig. A - Architecture KEDA (source : keda.sh)
    Fig. Une architecture KEDA

    Sources d’événements
    Ce sont les sources externes d’événements/déclencheurs par lesquelles KEDA modifie le nombre de pods. Prometheus, RabbitMQ et Apache Pulsar sont quelques exemples de sources d’événements.

    Détartreurs
    Les sources d’événements sont surveillées à l’aide de scalers, qui récupèrent les métriques et déclenchent la mise à l’échelle des déploiements ou des tâches en fonction des événements.

    Adaptateur de métriques
    L’adaptateur de métriques prend les métriques des scalers et les traduit ou les adapte sous une forme que le composant HPA/contrôleur peut comprendre.

    Manette
    Le contrôleur/opérateur agit sur les métriques fournies par l’adaptateur et provoque l’état de déploiement souhaité spécifié dans le ScaledObject (voir ci-dessous).

    CRD KEDA

    KEDA propose quatre ressources personnalisées pour exécuter les fonctions de mise à l’échelle automatique : ScaledObject, ScaledJob, TriggerAuthentication et ClusterTriggerAuthentication.

    ScaledObject et ScaledJob
    ScaledObject représente le mappage entre les sources d’événements et les objets et spécifie les règles de mise à l’échelle pour un déploiement, un StatefulSet, des travaux ou toute ressource personnalisée dans un cluster K8s. De même, ScaledJob est utilisé pour spécifier des règles de mise à l’échelle pour les tâches Kubernetes.

    Vous trouverez ci-dessous un exemple de ScaledObject qui configure la mise à l’échelle automatique KEDA en fonction des métriques Prometheus. Ici, l’objet de déploiement « keda-test-demo3 » est mis à l’échelle en fonction du seuil de déclenchement (50) des métriques Prometheus. KEDA mettra à l’échelle le nombre de répliques entre un minimum de 1 et un maximum de 10 et redimensionnera jusqu’à 0 répliques si la valeur de la métrique tombe en dessous du seuil.

    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
    name: prometheus-scaledobject
    namespace: demo3
    spec:
    scaleTargetRef:
    apiVersion: argoproj.io/v1alpha1
    kind: Rollout
    name: keda-test-demo3
    triggers:
    - type: prometheus
    metadata:
    serverAddress: http://<prometheus-host>:9090
    metricName: http_request_total
    query: envoy_cluster_upstream_rq{appId="300", cluster_name="300-0", container="envoy", namespace="demo3", response_code="200" }
    threshold: "50"
    idleReplicaCount: 0
    minReplicaCount: 1
      maxReplicaCount: 10

    TriggerAuthentication et ClusterTriggerAuthentication
    Ils gèrent l’authentification ou les secrets pour surveiller les sources d’événements.

    Voyons maintenant comment tous ces composants KEDA fonctionnent ensemble et font évoluer les charges de travail K8.

    Comment fonctionnent les composants KEDA ?

    Il est facile de déployer KEDA sur n’importe quel cluster Kubernetes, car il n’a pas besoin d’écraser ou de dupliquer les fonctionnalités existantes. Une fois déployés et les composants prêts, la mise à l’échelle basée sur les événements commence avec la source d’événement externe (voir Fig. A). Le scaler surveillera en permanence les événements basés sur l’ensemble source dans ScaledObject et transmettra les métriques à l’adaptateur de métriques en cas d’événements déclencheurs. L’adaptateur de métriques adapte ensuite les métriques et les fournit au composant de contrôleur, qui adapte ensuite le déploiement à la hausse ou à la baisse en fonction des règles de mise à l’échelle définies dans ScaledObject.

    Notez que KEDA active ou désactive un déploiement en mettant à l’échelle le nombre de répliques à zéro ou à une. Il déclenche ensuite HPA pour faire passer le nombre de charges de travail de un à n en fonction des ressources du cluster.

    Déploiement et démonstration de KEDA

    KEDA peut être déployé dans un cluster Kubernetes via des chartes Helm, un hub d’opérateur ou des déclarations YAML. Par exemple, la méthode suivante utilise Helm pour déployer KEDA.

    #Adding the Helm repo
    helm repo add kedacore https://kedacore.github.io/charts
    
    #Update the Helm repo
    helm repo update
    
    #Install Keda helm chart
    kubectl create namespace keda
    helm install keda kedacore/keda --namespace keda

    Pour vérifier si l’opérateur KEDA et le serveur de l’API Metrics sont opérationnels ou non après le déploiement, vous pouvez utiliser la commande suivante :

    Maintenant, regardez la vidéo ci-dessous pour voir une démonstration pratique de l’autoscaling à l’aide de KEDA. La démo utilise une petite application appelée TechTalks et utilise RabbitMQ comme courtier de messages.


    Intégrer KEDA dans les pipelines CI/CD

    KEDA rend la mise à l’échelle automatique des charges de travail K8 très simple et efficace. De plus, l’approche indépendante des fournisseurs de KEDA garantit une flexibilité en ce qui concerne les sources d’événements. Par conséquent, il peut aider les équipes DevOps et SRE à optimiser le coût et l’utilisation des ressources de leur cluster Kubernetes en augmentant ou en réduisant en fonction des sources d’événements et des métriques de leur choix.

    L’intégration de KEDA dans les pipelines CI/CD permet aux équipes DevOps de réagir rapidement aux événements déclencheurs dans les besoins en ressources de leur application, rationalisant davantage le processus de livraison continue. Et KEDA prend en charge les événements générés par différentes charges de travail telles que StatefulSet, Job, Custom Resource et Job. Tous ces éléments contribuent à réduire les temps d’arrêt et à améliorer l’efficacité des applications et l’expérience utilisateur.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.