Nous avons mis en place un cluster Kubernetes de tâches cron de scraping web. Tout semble bien se passer jusqu'à ce qu'une tâche cron commence à échouer (par exemple, lorsqu'un site change de structure et que notre scraper ne fonctionne plus). Il semble que, de temps en temps, quelques tâches cron défaillantes continuent à réessayer au point de faire tomber notre cluster. Exécution de kubectl get cronjobs
(avant une défaillance du cluster) montrera trop de travaux en cours pour un travail défaillant.
J'ai essayé de suivre la note décrite ici concernant un problème connu avec la politique d'échec du pod backoff ; cependant, cela ne semble pas fonctionner.
Voici notre configuration pour référence :
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: scrape-al
spec:
schedule: '*/15 * * * *'
concurrencyPolicy: Allow
failedJobsHistoryLimit: 0
successfulJobsHistoryLimit: 0
jobTemplate:
metadata:
labels:
app: scrape
scrape: al
spec:
template:
spec:
containers:
- name: scrape-al
image: 'govhawk/openstates:1.3.1-beta'
command:
- /opt/openstates/openstates/pupa-scrape.sh
args:
- al bills --scrape
restartPolicy: Never
backoffLimit: 3
Idéalement, nous préférerions qu'une tâche cron soit terminée après N tentatives (par exemple, quelque chose comme kubectl delete cronjob my-cron-job
après my-cron-job
a échoué 5 fois). Toute idée ou suggestion serait très appréciée. Merci !