← До списку лабораторних по Kubernetes
Повний опис / сценарій лабораторної:
Мета: навчитися керувати розміщенням pod за допомогою affinity і anti affinity. Крок 1. Створити базовий deployment без affinity. Команда: kubectl create deployment app-aa --image=nginx --replicas=4 -o yaml --dry-run=client > app-aa.yaml Пояснення: потім додамо до нього правила affinity. Крок 2. Додати label zone=a до однієї ноди. Команда: kubectl label node <імя-ноди> zone=a Пояснення: так ми створюємо умовну зону для розміщення pod. Крок 3. Додати podAffinity до yaml. Дія: у spec template spec додай podAffinity з вимогою розміщувати pod поруч з іншими pod які мають label app=app-aa. Пояснення: це може змусити всі pod збиратися на одній ноді. Крок 4. Застосувати оновлений deployment. Команда: kubectl apply -f app-aa.yaml Пояснення: pod будуть перезапущені за новими правилами розміщення. Крок 5. Перевірити на яких нодах працюють pod. Команда: kubectl get pods -l app=app-aa -o wide Пояснення: подивись чи зосереджені pod на конкретній ноді або групі нод. Крок 6. Додати podAntiAffinity. Дія: додай до yaml podAntiAffinity що забороняє запускати pod з app=app-aa на одній ноді більше ніж один екземпляр. Пояснення: так ти змусиш replica розподілитися по нодах. Крок 7. Оновити deployment. Команда: kubectl apply -f app-aa.yaml Пояснення: под можуть тимчасово перезапускатися поки scheduler знайде підходящі ноди. Крок 8. Перевірити розподіл pod. Команда: kubectl get pods -l app=app-aa -o wide Пояснення: тепер pod повинні бути максимально рознесені по різних нодах. Крок 9. Перевірити події scheduler. Команда: kubectl describe pod <один-pod> | grep -i schedule -n Пояснення: побачиш як scheduler приймав рішення щодо розміщення. Крок 10. Міні звіт. Завдання: опиши реальні сценарії де потрібне affinity та anti affinity, наприклад для кешів або реплік баз даних.