Implementazione corretta per i probe Kubernetes Liveness e Readiness

Aug 24 2020

Data un'applicazione Python che esegue il polling dell'argomento Kafka in un ciclo infinito e carica il risultato nel bucket s3 dopo aver elaborato il messaggio Kafka ricevuto.

Quali dovrebbero essere gli aspetti da considerare nella definizione delle sonde di prontezza e attività per Kubernetes.

Ha senso includere nella readiness probe:

  1. Che esistono i secchi s3.
  2. Quell'argomento di Kafka esiste.
  3. Il ciclo che interroga l'argomento di Kafka è stato inizializzato.

E la sonda di attività controlla solo che il ciclo di polling non sia terminato.

È strettamente una cattiva pratica controllare queste cose nella sonda di prontezza?

Risposte

2 DavidMaze Aug 24 2020 at 19:51

Non controllerei nessuna di queste cose nelle sonde Kubernetes. Fai in modo che l'avvio dell'applicazione li controlli da solo e, se l'ambiente non è adatto, esci immediatamente. Il tuo pod verrà visualizzato nello stato CrashLoopBackOff e si riavvierà un paio di volte, ma sarà molto chiaro che qualcosa non va.

C'è qualche possibilità che queste cose falliscano mentre l'applicazione è in esecuzione, ma dovresti essere in grado di notarlo. Un sistema di metriche come Prometheus può aiutarti a notare se la maggior parte delle tue richieste S3 fallisce, ad esempio. Se riesci a verificare se il ciclo principale del tuo ascoltatore Kafka è terminato, puoi anche riavviarlo.