← До списку лабораторних по Kubernetes
Повний опис / сценарій лабораторної:
Мета: навчитися використовувати 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 допомагає при відмові однієї з зон або доступності.