Aktualizacja Deploymentu w GKE wymusiła zamknięcie aplikacji, zanim ta zdążyła zamknąć połączenie z bazą danych. Jak należy zmodyfikować aplikację, aby zapewnić jej bezpieczne zamknięcie (graceful shutdown)?
Wybierz odpowiedź
Dotknij opcji, aby sprawdzić swoją odpowiedź.
Poprawna odpowiedź: Zaktualizuj kod, aby przetwarzał odebrany sygnał SIGTERM w celu bezpiecznego rozłączenia z bazą danych..
Dlaczego to jest odpowiedź
Poprawna odpowiedź to aktualizacja kodu w celu obsługi sygnału SIGTERM. Kiedy Kubernetes zamyka poda, wysyła sygnał SIGTERM do kontenera, dając aplikacji czas na bezpieczne zakończenie działania, np. zamknięcie połączeń z bazą danych i zapisanie stanu. Jeśli aplikacja nie obsługuje tego sygnału, zostanie wymuszona na niej terminacja po upływie terminationGracePeriodSeconds, co może prowadzić do utraty danych lub uszkodzenia połączeń. Pozostałe opcje są nieprawidłowe: PodDisruptionBudget zapobiega jednoczesnemu zamknięciu zbyt wielu podów, ale nie rozwiązuje problemu bezpiecznego zamknięcia pojedynczej instancji. Zwiększenie terminationGracePeriodSeconds daje aplikacji więcej czasu na zamknięcie, ale nie sprawi, że aplikacja sama z siebie zacznie bezpiecznie się zamykać – nadal wymaga to obsługi sygnału SIGTERM w kodzie. Hook PreStop jest wykonywany przed wysłaniem sygnału SIGTERM, ale jest przeznaczony do wykonania operacji czyszczących przed zamknięciem aplikacji, a nie do zarządzania samym procesem bezpiecznego zamknięcia, który powinien być obsługiwany przez aplikację po otrzymaniu SIGTERM.
Zdaj egzamin — bez niekończącego się szukania odpowiedzi
Uzyskaj wszystkie zweryfikowane pytania i wyjaśnienia do tego egzaminu w jednym miejscu i zaoszczędź godziny przygotowań. Ponad 1000 certyfikacji · Ponad 20 języków · Zacznij za darmo.
Zdaj egzamin szybciej → Karta nie jest wymagana