Cron → K8s CronJob
Kubernetes DevOps & Cloud-Native Batch Generator

Convertisseur Cron vers Kubernetes CronJob YAML et Générateur de Spécification

Convertissez des expressions crontab classiques en manifestes Kubernetes CronJob prêts pour la production avec restartPolicy, concurrencyPolicy, quotas de ressources et gestion des fuseaux horaires.

POSIX Crontab ↔ batch/v1 CronJob & Helm
Préréglages :
Politique de Concurrence:
Politique de Redémarrage:
CPU:/
Mem:/
Planification Crontab & CommandePOSIX Standard
Enter 5-part cron or full crontab command line:[min] [hour] [dom] [mon] [dow] [cmd?]
Quick Chips:
Container Command / Exec Script:
|
Planification Kubernetes Évaluéespec.schedule
schedule: "0 2 * * *"
5-Part Schedule Breakdown & Semanticsbatch/v1 Spec
Min 0At min 0
Hour 2At hour 2:00
DOM *Every day
Mon *Every month
DOW *Any weekday
Schedule Cadence:At 2:00 AM (02:00), every day.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
apiVersion: batch/v1
kind: CronJob
metadata:
  name: pg-nightly-backup
  namespace: default
  labels:
    app.kubernetes.io/name: pg-nightly-backup
    app.kubernetes.io/managed-by: toolsaa
spec:
  schedule: "0 2 * * *"
  timeZone: "UTC"
  concurrencyPolicy: Forbid
  suspend: false
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 1
  startingDeadlineSeconds: 120
  jobTemplate:
    spec:
      backoffLimit: 3
      activeDeadlineSeconds: 3600
      template:
        metadata:
          labels:
            app.kubernetes.io/name: pg-nightly-backup
        spec:
          restartPolicy: OnFailure
          containers:
          - name: pg-nightly-backup
            image: postgres:16-alpine
            imagePullPolicy: IfNotPresent
        command:
        - /bin/sh
        - -c
        args:
        - "pg_dumpall -h postgres.database.svc.cluster.local -U postgres | gzip > /tmp/backup.sql.gz"
            resources:
              requests:
                cpu: "100m"
                memory: "128Mi"
              limits:
                cpu: "500m"
                memory: "512Mi"
            securityContext:
              allowPrivilegeEscalation: false
              runAsNonRoot: true
              readOnlyRootFilesystem: false
Conformité de Syntaxe
VALID (batch/v1 Compliant)
Tested against POSIX crontab & Go-cron spec
Lignes CronJob
Forbid • OnFailure
TZ: UTC (backoff: 3)
Taille du Manifeste
46 lines • 1253 bytes
Resource limits: 500m / 512Mi

Confidentialité 100% Côté Client

Aucun envoi serveur ni télémétrie. Vos expressions cron et spécifications sont traitées exclusivement dans votre navigateur.

Conformité Kubernetes batch/v1

Génère des fichiers YAML conformes aux spécifications de l'API batch/v1 de Kubernetes et aux normes RFC 1123.

Ordonnancement Cloud-Native Entreprise

Gestion des politiques de concurrence (Forbid/Allow/Replace), restartPolicy (OnFailure/Never) et commandes de test kubectl.

Référence technique et guide d'architecture

Convertisseur Cron vers Kubernetes CronJob YAML et Générateur de Spécification — Guide de référence

Convertissez des expressions crontab classiques en manifestes Kubernetes CronJob prêts pour la production avec restartPolicy, concurrencyPolicy, quotas de ressources et gestion des fuseaux horaires.

Paramètres clés et contrôles

spec.schedulestring

Expression cron standard à 5 champs (minute, heure, jour du mois, mois, jour de la semaine) déterminant la fréquence d'exécution.

Par défaut : 0 0 * * *
spec.concurrencyPolicystring ('Allow' | 'Forbid' | 'Replace')

Définit le comportement lorsqu'une nouvelle exécution est planifiée alors que le job précédent est encore actif.

Par défaut : Allow
spec.jobTemplate.spec.template.spec.restartPolicystring ('OnFailure' | 'Never')

Politique de redémarrage des conteneurs du Pod. Les tâches batch doivent obligatoirement se terminer ; 'Always' est interdit par Kubernetes.

Par défaut : OnFailure
spec.startingDeadlineSecondsinteger (secondes)

Délai limite facultatif en secondes pour démarrer un job si l'heure planifiée a été manquée suite à une indisponibilité du cluster.

Par défaut : Aucun (optionnel)
spec.successfulJobsHistoryLimitinteger

Nombre de Pods de Jobs réussis conservés pour l'audit, les métriques et l'inspection des journaux.

Par défaut : 3
spec.failedJobsHistoryLimitinteger

Nombre de Pods de Jobs en échec conservés pour le diagnostic d'incident et l'analyse post-mortem.

Par défaut : 1

Conseils de pro et bonnes practices

Imposer 'concurrencyPolicy: Forbid' pour les tâches longues

Si une sauvegarde ou une synchronisation dépasse la durée de l'intervalle cron, 'Forbid' empêche l'empilement d'instances concurrentes, évitant l'épuisement des ressources et les verrous de base de données.

Définir 'activeDeadlineSeconds' pour éliminer les processus bloqués

Spécifiez systématiquement 'spec.jobTemplate.spec.activeDeadlineSeconds'. Si un pod se bloque sur un appel réseau, Kubernetes stoppe proprement le job à expiration du délai.

Exploiter le support natif des fuseaux horaires sous Kubernetes 1.27+

Renseignez 'spec.timeZone: "Europe/Paris"' ou '"UTC"' directement dans la spécification afin de respecter automatiquement l'heure d'été sans dépendre de l'horloge système du nœud hôte.

Ajuster 'backoffLimit' pour éviter les boucles d'échec répétées

Réduisez 'spec.jobTemplate.spec.backoffLimit' à 2 ou 3 au lieu de la valeur 6 par défaut, afin de limiter la prolifération de Pods en CrashLoopBackOff lors d'erreurs logicielles.

Pièges courants et dépannage

Erreur de restartPolicy : 'Pod template restart policy Always is not allowed'

Modifiez 'spec.jobTemplate.spec.template.spec.restartPolicy' en remplaçant 'Always' par 'OnFailure' ou 'Never'. Les Jobs Kubernetes doivent obligatoirement être terminaux.

Le CronJob cesse de se déclencher après plus de 100 démarrages manqués

Si un CronJob manque plus de 100 exécutions consécutives lors d'une panne, le contrôleur suspend la planification. Définissez 'spec.startingDeadlineSeconds: 200' et recréez le CronJob via kubectl.

Exécutions concurrentes provoquant des conflits d'écriture ou des deadlocks

Configurez 'spec.concurrencyPolicy' sur 'Forbid'. Kubernetes ignorera la nouvelle exécution planifiée tant que le job en cours n'est pas terminé.

Foire aux questions (FAQ)

Quelle version d'API Kubernetes doit être utilisée pour les CronJobs ?▼

Utilisez systématiquement 'apiVersion: batch/v1'. L'ancienne version 'batch/v1beta1' a été déclarée obsolète en v1.21 et totalement retirée dans Kubernetes v1.25.

En quoi un Kubernetes CronJob diffère-t-il d'un crontab Linux classique ?▼

Un crontab Linux lance des scripts directement sur l'OS local avec des droits système hôtes. Un Kubernetes CronJob orchestre des conteneurs isolés au sein de Pods distribués, avec gestion fine des quotas, injection de secrets et politiques de reprise automatique.

Peut-on exécuter manuellement un CronJob Kubernetes immédiatement ?▼

Oui, lancez la commande 'kubectl create job <nom-du-job> --from=cronjob/<nom-du-cronjob> -n <namespace>' pour déclencher immédiatement un Job ponctuel basé sur le modèle configuré.

Quelle est la différence entre restartPolicy: OnFailure et restartPolicy: Never ?▼

Avec 'OnFailure', le conteneur défaillant redémarre au sein du même Pod sur le même nœud. Avec 'Never', le Pod défaillant est conservé pour diagnostic et le contrôleur instancie un tout nouveau Pod sur un autre nœud selon la limite 'backoffLimit'.

Quel est l'impact des directives resources.requests et limits sur un CronJob ?▼

'resources.requests' permet au scheduler d'allouer le Pod sur un nœud disposant de CPU et mémoire suffisants. 'resources.limits' garantit qu'un script défaillant consommant trop de mémoire sera stoppé net (OOMKilled) sans pénaliser les services critiques du cluster.

Outils et utilitaires connexes

Tous les outils →
Générateur de Schémas GraphQL SDL depuis JSON (Types, Queries & Inputs) - Guide Développeurdeveloper

Générez des définitions de types d'objets, de types d'entrée (inputs) et de schémas de requêtes en syntaxe GraphQL SDL à partir d'objets JSON.

Ouvrir l'outil→
Générateur de Règles d'Alerte et d'Enregistrement Prometheus (PromQL) - Guide Développeurdeveloper

Créez et validez visuellement des règles d'alerte et d'enregistrement PromQL, des seuils, des étiquettes et des annotations de runbook.

Ouvrir l'outil→
Guide Développeur : Générateur de Types de Résolveurs TypeScript depuis GraphQL SDLdeveloper

Générez des interfaces de résolveurs TypeScript strictement typées, des arguments de requêtes/mutations et des types de contexte depuis vos schémas GraphQL SDL.

Ouvrir l'outil→
Guide de développement : Convertisseur cURL vers C# (.NET HttpClient, RestSharp et Flurl)developer

Convertissez vos requêtes cURL en code C# idiomatique pour .NET HttpClient, RestSharp ou Flurl.Http avec les meilleures pratiques de programmation asynchrone et de pool de connexions.

Ouvrir l'outil→
Guide développeur du convertisseur cURL vers Java (Java 11+ HttpClient, OkHttp & Spring WebClient)developer

Convertissez vos commandes cURL en requêtes HTTP Java prêtes pour la production avec java.net.http.HttpClient natif, OkHttp3 ou Spring WebClient.

Ouvrir l'outil→
Guide Développeur : Générateur de Définition JSON vers XML Schema (XSD)developer

Inférence de schémas XML (XSD), structures de types complexes, attributs et règles de cardinalité minOccurs/maxOccurs à partir d'échantillons JSON.

Ouvrir l'outil→