Come impostare un job server ricorrente in un cluster Kubernetes

4

Il mio compito corrente è quello di configurare un sistema che estrae le notifiche a utenti specifici in base a una pianificazione prestabilita. Dopo aver affrontato il problema delle notifiche push, sto cercando di mettere insieme un sistema che invierà regolarmente tali notifiche push. Poiché la nostra infrastruttura è basata su un cluster Kubernetes popolato con contenitori effimeri, una VM con cron non è possibile, quindi sono arrivato a due possibili soluzioni:

  1. Scrivi un processo che si trova in un contenitore Docker e su una pianificazione regolare usando cron, esegui l'attività per determinare quali notifiche inviare e poi inviarle fuori
  2. Scrivere un piccolo processo che determina quali notifiche devono essere inviate al momento attuale e pianificarle come un Kubernetes cron job

La prima sembra essere un'implementazione relativamente semplice che sarebbe implementata allo stesso modo in una VM e in un contenitore Docker, ma la mia preoccupazione è che, in un ambiente in cui i pod non dovrebbero durare a lungo, alcuni eventi potrebbe essere perso. La soluzione di Kubernetes, da quel punto di vista, sembra più robusta dal momento che la pianificazione avviene a un livello superiore rispetto al contenitore reale. Lo script attivato di per sé sarebbe anche più semplice in quanto sarebbe un processo one-off che termina e poi uccide il contenitore fino al prossimo runtime pianificato.

In questo momento mi sto orientando verso la seconda soluzione, ma se qualcuno ha qualche esperienza nel mettere in pratica questo tipo di cose sarebbe bello sentire alcune altre prospettive su come implementare questo tipo di server.

    
posta moberemk 21.06.2017 - 23:34
fonte

1 risposta

1

Da parte mia, la seconda opzione è l'implementazione perfetta per ciò che stai cercando di ottenere dal momento che l'infrastruttura si basa su contenitori effimeri di K8. Il problema è che cron (ScheduledJobs) non è ancora pronto per la produzione.

Hai bisogno di collegare container per le notifiche push da effettuare, eventuali risorse condivise? Questo è un problema che influirà sull'implementazione. Hai bisogno di individuare le eccezioni di errore? La maggior parte delle funzioni può essere implementata su uno script e consentire a Kubernetes CronJob spec di gestire solo la pianificazione. Se l'opzione Kubernetes non funziona, la finestra mobile più cron command è presente.

Dai anche un'occhiata al link , potrebbe valerne la pena.

    
risposta data 26.12.2017 - 11:46
fonte

Leggi altre domande sui tag