Перейти до вмісту

Модуль 6.4: Сховища в GKE

Складність: [MEDIUM] | Час на виконання: 2 год | Передумови: Модуль 6.1 (Архітектура GKE)

Чому цей модуль важливий

Розділ «Чому цей модуль важливий»

У серпні 2023 року компанія з розробки онлайн-ігор втратила дані про прогрес 180 000 гравців за шість годин. Їхня база даних PostgreSQL працювала на звичайному Persistent Disk (PD), приєднаному до пода в одній зоні доступності. Коли в дата-центрі us-central1-a стався збій, сервер із базою вимкнувся. Оскільки диск був зональним, його неможливо було підключити до сервера в іншій зоні. База “лежала” 6 годин, доки Google не полагодив зону. Збитки оцінили у $420 000, а репутаційні втрати назвали “неоціненними”. Виправлення було простим: перейти на Regional Persistent Disk, який копіює дані у дві зони одночасно. Це коштувало всього на кілька центів дорожче за гігабайт.

Сховища в Kubernetes — це місце, де філософія “худоби, а не домашніх улюбленців” (cattle, not pets) зустрічається з реальністю. Поди без стану можна міняти миттєво, але поди з Persistent Volumes несуть дані, які мають виживати при перезапусках та катастрофах. GKE пропонує багато варіантів: швидкі диски (Persistent Disks), спільні файлові папки (Filestore), підключення бакетів як дисків (Cloud Storage FUSE) та систему бекапів (Backup for GKE).

У цьому модулі ви навчитеся обирати правильний тип сховища, розберетеся з механікою Regional PD для високої надійності, навчитеся ділитися файлами між багатьма подами одночасно та впровадите систему автоматичних бекапів вашого кластера.


Persistent Disk CSI Driver: Блочне сховище

Розділ «Persistent Disk CSI Driver: Блочне сховище»

Це основний спосіб зберігання даних у GKE.

  • Standard (pd-standard): Найдешевші HDD, для логів або архівів.
  • Balanced (pd-balanced): Стандарт для більшості задач (SSD).
  • SSD (pd-ssd): Для баз даних із низькою затримкою.
  • Extreme: Для надважких навантажень (SAP, Oracle).

Важливе налаштування: WaitForFirstConsumer

Розділ «Важливе налаштування: WaitForFirstConsumer»

У регіональних кластерах завжди використовуйте volumeBindingMode: WaitForFirstConsumer. Це гарантує, що диск буде створено саме в тій зоні, де Kubernetes вирішив запустити ваш под.


Regional Persistent Disks: Висока доступність

Розділ «Regional Persistent Disks: Висока доступність»

Regional PD — це “магічна” функція GKE. Дані синхронно записуються у дві різні зони одного регіону.

Як це рятує при збої:

  1. Зона А падає.
  2. Kubernetes бачить, що под помер, і запускає його в зоні Б.
  3. Оскільки диск є регіональним, він просто відключається від мертвої зони А і підключається до зони Б за <60 секунд.
  4. Дані не втрачено (RPO=0).

Filestore (Керований NFS)

Розділ «Filestore (Керований NFS)»

Потрібен, коли багато подів мають писати в одну папку одночасно (ReadWriteMany).

  • Сценарії: спільні фото користувачів, CMS (WordPress), спільні білд-кеші.

Дозволяє підключити бакет S3/GCS як звичайну папку.

  • Плюс: Майже безкінечний обсяг за копійки.
  • Мінус: Повільніше за реальний диск. Ніколи не використовуйте для баз даних! Тільки для читання великих архівів або даних для навчання ML.

Backup for GKE: Ваш план порятунку

Розділ «Backup for GKE: Ваш план порятунку»

Це не просто копія диска. Backup for GKE зберігає все:

  • Дані на дисках (Snapshots).
  • Конфігурацію Kubernetes (Deployment, Secret, ConfigMap).
  • Навіть права доступу.

Ви можете відновити цілу систему в іншому кластері або іншому регіоні всього за кілька хвилин.


ПомилкаЧому це стаєтьсяЯк виправити
Зональний PD для продакшн БДСпроба зекономитиВикористовуйте Regional PD; це стандарт для критичних даних
Immediate binding modeСкопіювали старий прикладСтавте WaitForFirstConsumer у StorageClass
Reclaim Policy: DeleteDefault налаштуванняДля продуктових баз ставте Retain, щоб диск не зник випадково при видаленні PVC
Filestore для маленьких данихНе врахували мінімальну цінуFilestore має мінімальний розмір (1 чи 2.5 ТБ). Для менших потреб використовуйте інші рішення

1. Чому не можна використовувати Cloud Storage FUSE для зберігання бази даних?

Тому що об’єктні сховища не підтримують блокування файлів (locking) та атомарні зміни частин файлу. База даних гарантовано пошкодить свої файли при першому ж навантаженні.

2. У чому головна перевага 'Backup for GKE' перед звичайним знімком (snapshot) диска?

Знімок диска зберігає тільки дані. Backup for GKE зберігає і дані, і всі маніфести Kubernetes (як був налаштований под, які були секрети). Це дозволяє відновити працюючий додаток “однією кнопкою”.


Практична вправа: Створення відмовостійкої бази

Розділ «Практична вправа: Створення відмовостійкої бази»
  1. Створіть StorageClass із параметром replication-type: regional-pd.
  2. Розгорніть базу даних PostgreSQL як StatefulSet.
  3. Запишіть дані в таблицю.
  4. Вбийте вузол, на якому працює база (через консоль хмари).
  5. Спостерігайте, як под переїде в іншу зону і дані залишаться на місці.
  6. Налаштуйте Backup Plan для автоматичного щоденного копіювання цієї бази.

Ви опанували дані, тепер час навчитися керувати флотом кластерів та спостерігати за ними. Переходьте до Модуля 6.5: Спостережуваність GKE та Fleet Management — ви навчитеся працювати з Managed Prometheus, Multi-Cluster Services та керувати витратами в масштабі.