Supercronic: Crontabs Voor In Je Containers
Regelmatig terugkerende taken op een container paltform kun je op Kubernetes inregelen met een CronJob. Maar als je die taak elke minuut gaat uitvoeren levert dat misschien een belastingspatroon op op je cluster dat ongewenst is, helemaal als de taak veel resources als externe filesystemen nodig heeft.
Nu zou je natuurlijk een traditionele Cron daemon in een container kunnen
draaien, maar dan kom je er al snel achter dat deze graag als root
draaien,
met setgid
en setuid
permissies, en dat vind een container platform als
OpenShift weer minder grappig zonder dat je SecurityContextConstraints met veel
rechten gaat uitdelen. Ook zul je een init systeem in je container moeten
stoppen omdat anders mogelijke zombie processen niet goed opgeruimd worden, en
voor je het weet ben je een half OS in je container aan het stoppen.
Ook als je je taken vaker dan eens per minuut wilt draaien, of als je specifieke scheduling wensen hebt zoals “elke derde dinsdag van September” voldoet een traditionele Cron daemon of een Kubernetes CronJob al snel niet meer.
In deze video laat Wander een andere oplossing zien: supercronic
. Een Cron
vervanger die niet van gebruikers switched, environment variabelen niet
reset, en die extra scheduling mogelijkheden, zoals secondes, jaren, X-de
weekdag van de maand, etc, ondersteund.