← До фільтрів та технологій

← До списку лабораторних по Kubernetes

Kubernetes Лабораторна 22: Pod affinity та anti affinity

Технологія: Kubernetes

Номер лабораторної: 22 · Рівень: middle

Тема: Pod affinity та anti affinity

Повний опис / сценарій лабораторної:

Мета: навчитися керувати розміщенням 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, наприклад для кешів або реплік баз даних.