Implementazione corretta per i probe Kubernetes Liveness e Readiness
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:
- Che esistono i secchi s3.
- Quell'argomento di Kafka esiste.
- 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
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.