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

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

Kubernetes Лабораторна 30: Рівномірний розподіл pod по зоні

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

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

Тема: TopologySpreadConstraints

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

Мета: навчитися використовувати topologySpreadConstraints щоб рівномірно розподіляти pod.



Крок 1. Додати labels topology ключ zone до нод.

Команди: kubectl label node <нода-1> topology-zone=a; kubectl label node <нода-2> topology-zone=b

Пояснення: це умовні зони для розподілу навантаження.



Крок 2. Згенерувати yaml deployment.

Команда: kubectl create deployment spread-demo --image=nginx --replicas=6 -o yaml --dry-run=client > spread-demo.yaml

Пояснення: цей deployment будемо розносити по зонах.



Крок 3. Додати topologySpreadConstraints до yaml.

Опис: constraint по ключу topology-zone selector app=spread-demo maxSkew 1 і whenUnsatisfiable DoNotSchedule.

Пояснення: scheduler намагатиметься тримати кількість pod в зонах максимально рівною.



Крок 4. Застосувати deployment.

Команда: kubectl apply -f spread-demo.yaml

Пояснення: pod будуть розподілені по позначених нодах.



Крок 5. Перевірити розподіл pod.

Команда: kubectl get pods -l app=spread-demo -o wide

Пояснення: порахуй скільки pod в кожній зоні.



Крок 6. Вимкнути одну ноду.

Пояснення: можеш использовать cordon або тимчасово видалити ноду щоб побачити реакцію scheduler.



Крок 7. Перевірити події при створенні нових pod.

Команда: kubectl describe pod <один-pod> | grep -i topology -n

Пояснення: побачиш як застосовуються обмеження.



Крок 8. Змінити whenUnsatisfiable на ScheduleAnyway.

Пояснення: при цьому scheduler може порушувати обмеження але все одно розміщує pod.



Крок 9. Оновити deployment і знову перевірити розподіл.

Команда: kubectl apply -f spread-demo.yaml

Пояснення: подивись різницю у поведінці.



Крок 10. Міні звіт.

Завдання: опиши як topologySpreadConstraints допомагає при відмові однієї з зон або доступності.