Formation DevOps | Formation kubernetes​ : CronJob

www.itgalaxy.io

CronJob

Un CronJob crée des Jobs (objet k8s) selon un calendrier répétitif.

CronJob est destiné à effectuer des actions planifiées régulières telles que des sauvegardes, la génération de rapports, etc.

Un objet CronJob est comme une ligne d’un fichier crontab (table cron) sur un système Unix. Il exécute une tâche périodiquement selon un planning donné, écrit au format Cron .

Les CronJobs ont des limites et des particularités. Par exemple, dans certaines circonstances, un seul CronJob peut créer plusieurs Jobs simultanés.

Cet exemple de manifeste CronJob imprime l’heure actuelle et un message de bonjour toutes les minutes :

apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox:1.28
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

Syntaxe de planification

Ce .spec.schedulechamp est requis. La valeur de ce champ suit la syntaxe Cron :

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
│ │ │ │ │ 7 is also Sunday on some systems)
│ │ │ │ │ OR sun, mon, tue, wed, thu, fri, sat
│ │ │ │ │

Job

Un job crée un ou plusieurs pods et continuera à réessayer d’exécuter les pods jusqu’à ce qu’un nombre spécifié d’entre eux se terminent avec succès. À mesure que les pods se terminent avec succès, le job suit les achèvements réussis. Lorsqu’un nombre spécifié de réussites est atteint, le job (c’est-à-dire le travail) est terminée.

La suppression d’un job nettoiera les pods qu’elle a créés. La suspension d’un job supprimera ses pods actifs jusqu’à ce que la tâche reprenne.

Un cas simple consiste à créer un objet Job afin d’exécuter un pod de manière fiable jusqu’à son terme. L’objet Job démarrera un nouveau pod si le premier pod échoue ou est supprimé (par exemple en raison d’une panne matérielle du nœud ou d’un redémarrage du nœud).

Vous pouvez également utiliser un Job pour exécuter plusieurs Pods en parallèle.

Exécuter un exemple de Job

Voici un exemple de configuration de travail. Il calcule π jusqu’à 2000 places et l’imprime. Cela prend environ 10 secondes pour terminer.

kubectl apply -f job.yaml

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4

kubectl get pods --selector=batch.kubernetes.io/job-name=pi

Une autre façon de visualiser les logs d’un Job :

kubectl logs jobs/pi

Le résultat est similaire à ceci :

3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214

Automatic Cleanup for Finished Jobs

Une autre façon de nettoyer automatiquement les Jobs terminés (soit Completeou Failed) consiste à utiliser un mécanisme TTL fourni par un contrôleur TTL pour les ressources terminées, en spécifiant le .spec.ttlSecondsAfterFinishedchamp du Job.

Lorsque le contrôleur TTL nettoie le Job, il supprime le Job en cascade, c’est-à-dire supprime ses objets dépendants, tels que les Pods, ainsi que le Job. Notez que lorsque le Job est supprimé, ses garanties de cycle de vie, telles que les finaliseurs, seront honorées.

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-ttl
spec:
  ttlSecondsAfterFinished: 100
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Neve





1. Nous contactez


2. Infra as a Service

  • Description: Infrastructure cloud évolutive et sécurisée
  • Links:

3. Projets Développeurs


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io