This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Cronjobs in OpenShift ====== Cronjobs zijn alleen in te stellen vanaf de command-line, voor het instellen van een cronjob is het belangrijk om bekend te zijn met: * YAML syntax * (basiskennis van) de openshift/kubernetes command-line. * Hoe images werken binnen OpenShift Een cronjob is een pod die wordt opgestart door openshift (ongeveer) volgens het tijdschema wat je hebt opgegeven onder ''schedule:''. De cron-daemon draait zelf niet in deze container. \\ Een belangrijke kanttekening bij de scheduling van deze cron jobs is wat in het geval dat een job niet gestart kan worden. Standaard worden er uiteindelijk twee jobs gestart. Dit kun je anders inregelen door middel van deadlines, ConcurrencyPolicy en history limits. Het is sowieso erg wenselijk dat cron jobs die je aanmaakt in OpenShift idempotent zijn. === Voorbeeld-cronjob.yaml === Een cron job configuratie bestaat uit de volgende onderdelen: * Een ''schedule'' volgens een standaard cron scheduling format * ConcurrencyPolicy: Deze policy bepaald of cronjobs tegelijk naast elkaar mogen draaien. Als je niets op geeft staat het standaard ingesteld dat jobs tegelijkertijd naast elkaar mogen draaien (''allow''). De beschikbare policy's zijn: * Allow, Cron jobs mogen naast elkaar draaien. * Forbid, Cron jobs mogen niet naast elkaar draaien. Als een lopende job nog niet afgerond bij de volgende ronde, dan wordt de nieuwe uit te voeren job overgeslagen. * Replace, Cron jobs mogen niet naast elkaar draaien. Als er een lopende job nog niet is afgerond wordt deze afgebroken en wordt er een nieuwe job gestart. Voorbeeld-code met toelichting: <code yaml> apiVersion: batch/v1beta1 kind: CronJob metadata: name: voorbeeld spec: suspend: false concurrencyPolicy: Forbid failedJobsHistoryLimit: 1 # De schedule van de cron job, in dit voorbeeld wordt deze elke minuut uitgevoerd schedule: "*/1 * * * *" jobTemplate: spec: template: metadata: labels: parent: "cronjobvoorbeeld" spec: containers: - name: $image-php image: command: - php artisan schedule:run restartPolicy: OnFailure </code> Zoals gebruikelijk kun je via een yaml file (resource definition) de resource aanmaken die beschreven staat, in dit geval dus een cron job via: <code bash> oc create -f cronjob.yaml </code> Het bekijken van de status van cronjobs kan op een dezelfde manier als voor andere resources: <code bash> # bestaande cron jobs binnen een project opvragen oc get cronjob # de complete resource definition op vragen van een bestaande cron job in yaml-formaat oc get cronjob/$cron-job -o yaml # Eigenschappen opvragen van een bestaande cron job oc describe cronjob/$cron-job</code> ==== Troubleshooten en log-files bekijken van cronjobs ==== Om logs te lezen moeten we weten wat de naam is van de pod welke de cronjob-taak heeft uitgevoerd. <code bash>oc get pods</code> Vervolgens kun je met: oc logs //<naam van de cronjob die als laatste gedraaid heeft>// de logs terugzien van de cronjob. bijvoorbeeld: \\ ''oc logs cronjob-php-1234567-abc'' \\ Verder troubleshooten van de cronjob-container kan met ''oc debug'' of met ''oc rsh''. \\ Verdere uitleg staat in [[ https://docs.openshift.com/container-platform/3.11/dev_guide/cron_jobs.html | de officiele openshift documentatie ]] chp/concepten/cronjobs.txt Last modified: 2026/05/27 14:01by 127.0.0.1 Log In