Gartner 2020 SOAP Guide
SMA Technologies nommé comme fournisseur représentatif
Voir le rapport complet
Blog Replacement Kubernetes CronJob Scheduler

Replacement Kubernetes CronJob Scheduler

  • mars 26th, 2021

  • 1059

Si votre entreprise utilise Kubernetes pour l'exécution de conteneurs Docker ou d'autres applications conteneurisées, vous savez probablement que le planificateur natif CronJob peut être irrégulier, peu collaboratif et difficile à comprendre. Alors, que pouvez-vous faire pour vous assurer que vos tâches crons s'exécutent quand elles le doivent ?

Problématiques récurrentes

Kubernetes reconnaît que "les CronJobs peuvent présenter des limitations et des incertitudes". Plus précisément, comme l'ont découvert les ingénieurs de la société Lyft en adoptant CronJobs pour remplacer Unix cron, les CronJobs peuvent connaître des retards de démarrage importants, car les tâches nécessitent que plusieurs événements se produisent avant que tout code d'application ne commence à s'exécuter. Ces événements, combinés à l'échelle de CronJobs dans un environnement multi-tenant, peuvent entraîner des retards de démarrage importants et imprévus, ce qui fait que les CronJobs ne sont pas exécutés.

Par exemple, au départ, cronjobcontroller traite et décide de lancer le CronJob. Dans un événement ultérieur, cronjobcontroller crée un job à partir de la spécification de job du CronJob. Ensuite, jobcontroller remarque le job nouvellement créé et crée un pod. Les contrôleurs d'admission Kubernetes injectent les spécifications du conteneur latéral dans la spécification du pod. Le kube-scheduler planifie le Pod sur un kubelet. Le kubelet exécute alors le pod (en tirant toutes les images de conteneur), démarre tous les conteneurs sidecar et le conteneur d'application.

Une fois qu'un certain nombre de CronJobs est atteint, la latence a tendance à se manifester. Dans Kubernetes 1.18, le cronjobcontroller se contente de lister tous les CronJobs toutes les 10 secondes et de placer une logique de contrôle sur chacun d'eux. L'implémentation du cronjobcontroller procède de manière synchrone, en émettant un ou plusieurs appels API supplémentaires pour chaque CronJob. Lorsque le nombre de CronJobs atteint un certain niveau, ces appels d'API commencent à être limités en termes de débit côté client, selon Kevin Yang, auteur du rapport de Lyft.

Les pics d'activité peuvent se produire à des moments de forte demande pour les tâches de l'ordonnanceur Kubernetes - comme le début de la minute, au début de chaque heure - lorsque de nombreux crons doivent être invoqués simultanément. Pourquoi ces problèmes sont-ils importants ? Parce qu'ils sont susceptibles de provoquer l'échec de l’appel des CronJobs et leur non-exécution.

Les administrateurs ont également identifié un certain nombre de problèmes liés au suivi de l'échec des tâches et des conteneurs, notamment des "problèmes techniques de longue date dans Kubernetes" qui nécessitent une intervention manuelle pour y remédier.

Mon cron fonctionne-t-il ?

Des interventions manuelles sont également possibles pour obtenir quelques informations sur l'état des programmes Cron. La documentation de Kubernetes donne des indications sur la manière de savoir si un cron est en cours d'exécution. Cependant, Jack Wallen, chroniqueur pour Tech Republic, donne une explication plus claire et légèrement différente dans un article sur l'utilisation des CronJobs pour la planification dans Kubernetes.

Wallen explique comment, après avoir déployé un cluster Kubernetes et créé un fichier YAML pour la tâche, vous pouvez utiliser une série de commandes pour déployer la commande qui inclut la tâche planifiée, vous assurer que la tâche est en cours d'exécution, et la surveiller en obtenant une liste de chaque tâche déployée.

Mon cron s'est-il bien exécuté ?

Certains utilisateurs réorganisent en profondeur leur implémentation en prenant un certain nombre de mesures, notamment en corrigeant les bugs sous-jacents de Kubernetes et en instrumentant sa plateforme avec des métriques et des alertes intégrées.

Le nouvel outillage pour une implémentation correcte comprend une série de compteurs qui répondent à ces questions :

  • Le code de l'application s'est-il exécuté ?
  • Le cron s'est-il exécuté avec succès ?
  • Pourquoi mon cron ne fonctionne-t-il pas ?

Lyft a également créé ses propres compteurs pour mesurer le délai de démarrage et le temps nécessaire à l'exécution du code.

Mais voulez-vous vraiment faire tout ce codage spécifique ?

Il existe un moyen de bénéficier des avantages de Kubernetes sans avoir à créer votre propre automatisation ad hoc, et la plupart des entreprises ne disposent pas des ressources en développement nécessaires pour rentabiliser cette solution. Et si vous pouvez remplacer cronjobscheduler ?

Les ordonnanceurs semblent ennuyeux et de la vieille école, mais ils sont très performants dans les domaines où le planificateur natif de Kubernetes ne l'est pas. Ils ont évolué vers des plateformes d'automatisation modernes, comme OpCon, qui peuvent gérer des processus pilotés par des événements (pilotés au plan) avec des options de planification de fréquence extrêmement granulaires qui évitent les engorgements qui se produisent lorsque vous essayez de monter en charge avec cronjobcontroller.

Les responsables IT peuvent être sceptiques, mais prenons un peu de recul et considérons le problème comme un problème d'infrastructure et d'opérations informatiques à résoudre. Vous avez beaucoup de processus informatiques qui doivent se dérouler, et vous avez besoin d'une plateforme d’automatisation qui peut parler à toutes vos applications et déplacer les données entre les environnements, et elle doit fonctionner 24/7/365 sans échec. Une plateforme comme OpCon peut répondre à ce besoin car elle a été construite dans ce but précis. Vous pouvez gérer toute votre surveillance, vos notifications, votre planification et la mise en œuvre de nouveaux processus à partir d'une seule interface. Et elle est également disponible sur Docker.

Les problèmes d'ordonnancement de Kubernetes CronJob semblent être une nouveauté, mais c'est en fait une problématique récurrente sur une nouvelle infrastructure. SMA Technologies peut utiliser OpCon pour aider votre organisation à contourner les limites des outils d'ordonnancement natifs de Kubernetes et économiser beaucoup de temps et d'argent.

Vous voulez en savoir plus sur l'automatisation ? Planifier une démo de OpCon.

S'abonner au blog SMA

Abonnez-vous à notre blog pour recevoir les dernières actualités sur l'automatisation.

Entrez votre e-mail pour recevoir nos derniers articles parus.

Je comprends que je recevrai des communications hebdomadaires de la part de SMA Technologies.