Модуль 7.4: AKS у продакшні — Сховища, Спостережуваність та Масштабування
Складність: [MEDIUM] | Час на виконання: 2.5 год | Передумови: Модуль 7.1 (Архітектура AKS)
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»У листопаді 2023 року онлайн-магазин на AKS пережив катастрофічний збій під час Чорної п’ятниці. Їхній сервіс обробки замовлень використовував диски Azure Premium SSD. Коли трафік зріс у 15 разів, диски вперлися у ліміт швидкості (IOPS), і запити почали накопичуватися в чергу. Інженери не бачили цього, бо моніторили лише CPU та пам’ять. Намагаючись врятувати ситуацію, вони збільшили кількість подів із 6 до 30. Це зробило ситуацію ще гіршою: 30 подів почали битися за той самий ліміт диска, повністю заблокувавши систему на півтори години. Збитки склали $4.2 мільйона.
Ця історія ілюструє патерн, який повторюється всюди: сховища, спостережуваність та масштабування часто вважаються другорядними речами, але саме вони стають причиною найважчих аварій. Без спостережуваності ви не знаєте, куди масштабуватися. Без правильного масштабування ви вбиваєте свої сховища.
У цьому модулі ви навчитеся обирати правильні типи дисків та файлових систем Azure, налаштуєте сучасний моніторинг через Managed Prometheus та Grafana, а також впровадите KEDA — систему, яка масштабує ваші додатки не за CPU, а за реальними бізнес-показниками (напр. кількістю замовлень у черзі).
Сховища Azure для Kubernetes: Disks vs Files
Розділ «Сховища Azure для Kubernetes: Disks vs Files»AKS підтримує два основні типи постійних сховищ.
1. Azure Disks: Блочне сховище (RWO)
Розділ «1. Azure Disks: Блочне сховище (RWO)»Це як USB-диск, який підключається до одного сервера за раз.
- Premium SSD: Золотий стандарт для баз даних (1мс затримка).
- Ultra Disk: Для надважких навантажень, де потрібна екстремальна швидкість (до 160 000 IOPS).
- Важливо: Диски прив’язані до конкретної зони (AZ). Якщо под переїде в іншу зону — диск за ним не поїде.
2. Azure Files: Спільні папки (RWX)
Розділ «2. Azure Files: Спільні папки (RWX)»Це мережева папка (NFS або SMB), яку можуть читати і писати сотні подів одночасно.
- Сценарії: спільні фото користувачів, CMS (WordPress), великі набори даних для ML.
- Плюс: Може бути гео-надлишковим (ZRS), тобто доступним у всіх зонах регіону одночасно.
Спостережуваність (Observability)
Розділ «Спостережуваність (Observability)»Ви не можете керувати тим, чого не бачите.
- Container Insights: Вбудована система, що збирає всі логи та метрики кластера в Log Analytics.
- Managed Prometheus: Повністю керований сервер Prometheus. Ви отримуєте стандартну мову запитів PromQL без потреби керувати базою даних для метрик.
- Managed Grafana: Візуалізація. Azure сам створює для вас дашборди зі здоров’ям кластера, вузлів та мережі.
KEDA: Масштабування за подіями
Розділ «KEDA: Масштабування за подіями»Стандартний Kubernetes вміє масштабуватися тільки за CPU та пам’яттю. KEDA (Kubernetes Event-Driven Autoscaling) додає ще 60+ способів масштабування.
Чому це круто:
- Scale to zero: Якщо в черзі порожньо — KEDA видаляє всі поди. Ви не платите за них нічого.
- Business triggers: Масштабуйтеся за кількістю листів у черзі, запитів до бази даних або навіть часом доби.
- Швидкість: KEDA бачить зміну в черзі миттєво, не чекаючи, поки нагріється процесор.
Типові помилки
Розділ «Типові помилки»| Помилка | Чому це стається | Як виправити |
|---|---|---|
Забутий WaitForFirstConsumer | Диск створюється раніше пода | Завжди використовуйте цей режим у StorageClass для Multi-AZ кластерів |
| Моніторинг тільки CPU | Диск або мережа можуть бути причиною гальм | Додайте метрики I/O (Disk Latency) на свої дашборди |
| KEDA scale-to-zero для API | Довге очікування першого запиту | Для критичних API ставте minReplicaCount: 1, щоб уникнути холодного старту |
| Немає лімітів на логи | Рахунок за Log Analytics шокує | Використовуйте фільтри у ConfigMap, щоб не слати в хмару непотрібні системні логи |
Тест
Розділ «Тест»1. Чому важливо використовувати Azure Files NFS для навчання моделей ML?
Тому що навчання часто потребує доступу до одних і тих самих терабайтів даних із багатьох подів одночасно. Azure Files підтримує режим ReadWriteMany та протокол NFS з опцією nconnect, що дає дуже високу швидкість читання на багатьох серверах одночасно.
2. Як KEDA допомагає економити гроші в хмарі?
Вона дозволяє видаляти поди повністю (до 0 реплік), коли немає роботи. Це тригерить автомасшабувальник вузлів, який вимикає самі сервери. В результаті ви платите рівно за той час, коли оброблялися реальні дані.
Практична вправа: Масштабування за чергою
Розділ «Практична вправа: Масштабування за чергою»- Увімкніть KEDA як Add-on на вашому кластері.
- Створіть чергу в Azure Service Bus.
- Розгорніть воркер (Deployment) із 0 репліками.
- Налаштуйте ScaledObject, щоб запускати по 1 поду на кожні 5 повідомлень у черзі.
- Забийте чергу 50 повідомленнями і подивіться, як Kubernetes запустить 10 подів за лічені секунди.
- Очистіть чергу і перевірте, що через 2 хвилини всі поди зникли.
Вітаємо!
Розділ «Вітаємо!»Ви завершили повну серію Глибокого занурення в Azure Kubernetes Service (AKS). Тепер ви володієте знаннями архітектора: від безпеки Entra ID та мереж Cilium до просунутого масштабування за подіями.
Ці навички дозволяють вам будувати платформи, які не просто працюють, а є надійними, безпечними та економічно вигідними.
Що далі?
- Дослідіть трек Платформної інженерії, щоб дізнатися, як ці сервіси AKS стають частиною єдиного продукту для розробників.
- Перегляньте Розеттський камінь гіперскейлерів, щоб порівняти AKS із рішеннями від Google та Amazon.