← До списку лабораторних по Kubernetes
Повний опис / сценарій лабораторної:
Мета: навчитися організовувати коректне завершення роботи додатка при видаленні pod. Крок 1. Створити deployment з простим http сервісом. Команда: kubectl create deployment shutdown-demo --image=nginx --replicas=2 -o yaml --dry-run=client > shutdown-demo.yaml Пояснення: додамо до нього preStop hook. Крок 2. Додати preStop hook у yaml. Опис: у spec containers lifecycle preStop виконай команду яка спочатку логує повідомлення потім спить декілька секунд. Пояснення: це імітує час на завершення активних запитів. Крок 3. Змінити terminationGracePeriodSeconds. Пояснення: збільш час наприклад до 60 секунд щоб у додатка був запас на завершення. Крок 4. Застосувати deployment. Команда: kubectl apply -f shutdown-demo.yaml Пояснення: нові pod запускатимуться з заданими lifecycle налаштуваннями. Крок 5. Створити pod клієнт для навантаження. Команда: kubectl run shutdown-client --rm -it --image=radial/busyboxplus:curl --restart=Never -- sh Пояснення: внутрішній клієнт буде надсилати запити до сервісу. Крок 6. Створити service для shutdown-demo. Команда: kubectl expose deployment shutdown-demo --name=shutdown-svc --port=80 Пояснення: клієнт буде ходити на цей service. Крок 7. Запустити безперервні запити. Команда всередині клієнта: while true; do curl -s -o /dev/null -w "." shutdown-svc; sleep 1; done Пояснення: крапки у виводі показують успішні відповіді. Крок 8. У іншому вікні видалити один з pod. Команда: kubectl delete pod <імя-pod> --grace-period=60 Пояснення: preStop hook має спрацювати а додаток коректно завершити зєднання. Крок 9. Спостерігати поведінку клієнта. Пояснення: під час завершення pod не повинно бути великої кількості помилок якщо service встигає переключити трафік. Крок 10. Міні звіт. Завдання: опиши як би ти налаштовував graceful shutdown для stateful сервісу наприклад черги або бази даних.