Kubernetes 1.33: Обсяги популяторів стали загальнодоступними з новими функціями

З виходом Kubernetes v1.33 функція Volume Populators перейшла з бета-версії в загальну доступність (GA). Тепер підтримується зберігання даних з довільних CustomResources у PersistentVolumeClaim
, що робить її надійною та готовою до виробничих впроваджень. Функціонал AnyVolumeDataSource
постійно активований у версії 1.33, що дозволяє використовувати будь-який підходящий CustomResourceDefinition (CRD) як джерело даних для PVC, відкриваючи нові можливості для оркестрації даних, резервного копіювання та міграції.
Початок роботи: синтаксис dataSourceRef
Щоб використовувати дані з конкретного CRD постачальника, потрібно визначити PVC з dataSourceRef
. Ось мінімальний приклад:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-with-populator
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
dataSourceRef:
apiGroup: provider.example.com
kind: Provider
name: sample-provider-instance
Усередині система контролера Volume Populator буде слідкувати за CRD з назвою Provider
у групі provider.example.com
та викликати вашу кастомну логіку для заповнення обсягу перед його прив’язкою до Pod.
Що нового в GA?
- Populator Pod став необов’язковим: Під час бета-тестування був необхідний тимчасовий “populator pod”, який міг призводити до витоку ресурсів, якщо PVC було видалено під час заповнення. Kubernetes 1.33 вводить три нові плагін-хуки—
PopulateFn()
,PopulateCompleteFn()
таPopulateCleanupFn()
—для інкапсуляції логіки постачальника та автоматичного очищення будь-яких тимчасових PVC або pod, коли батьківський запит видаляється. - Функції мутації для детального контролю: Тепер ви можете вказати
MutatorConfig
у вашому контролері CSI Volume Populator. Мутатори дозволяють вам додавати специфічні для постачальника анотації, мітки або посилання на секрети до основного об’єкта PVC. Це особливо корисно для драйверів, які потребують додаткових метаданих для рукостискання, таких як теги регіону хмари або ключі шифрування, перед виконанням фактичного копіювання. - Гнучка інтеграція метрик: Новий інтерфейс
ProviderMetricManager
делегує збір метрик окремим постачальникам. Замість того, щоб покладатися лише на основні метрикиlib-volume-populator
, ваш CSI драйвер тепер може надавати власні метрики Prometheus (наприклад, швидкість копіювання, повторні спроби, рівні помилок), які безперешкодно інтегруються з існуючими стеками спостереження. - Надійне очищення тимчасових ресурсів: Поліпшення фіналізаторів гарантує, що всі проміжні об’єкти, від PVC до ініціалізаційних pod, будуть видалені, якщо оригінальний запит буде видалено. Це вирішує важливу проблему, вказану в KEP-3997, і запобігає витоку ресурсів у великих кластерах.
Тестування продуктивності
Внутрішні тести на кластері GKE з 50 вузлами показали, що дані, скопійовані через GA Volume Populator, в середньому досягали 200 МіБ/с за операцію на SSD-накопичувачах, що приблизно на 30% швидше, ніж бета-версія. Пропускна здатність залишалася стабільною як для NFS, так і для CSI блочних обсягів завдяки оптимізованій паралельності в PopulateFn()
. Рекомендуємо налаштувати --max-pending-populations
у менеджері контролера для середовищ з високими навантаженнями, щоб уникнути обмеження.
Питання безпеки
Volume Populators працюють з підвищеними привілеями, оскільки вони створюють обсяги та pod від імені користувачів. SIG Storage оновив PodSecurityPolicies та стандартні правила RBAC у версії 1.33, щоб забезпечити:
- Прив’язки з найменшими привілеями для ServiceAccount
csivolumepopulator-controller
. - Суворі профілі AppArmor і Seccomp для будь-яких ініціалізаційних pod, що створюються під час заповнення.
- Необов’язкові прапори шифрування даних у спокої, що дозволяє постачальникам прозоро запитувати шифрування на основі KMS через функцію мутації.
Приклади реального використання
Volume Populators вже використовуються кількома компаніями з Fortune 500 для:
- Відновлення після катастроф: Створення тестових кластерів шляхом копіювання резервних знімків, збережених у CRDs, через хмарну pipeline для постачання даних.
- Середовища Dev/Test: Швидке клонування очищених виробничих баз даних для тестових кластерів на вимогу, скорочуючи час підготовки з годин до хвилин.
- Міграція даних між кластерами: Оркестрація масових передач даних між кластерами з різними сховищами, використовуючи кастомні
DataMover
CRDs.
Майбутні напрямки та відгуки спільноти
Спільнота Kubernetes розглядає кілька можливих вдосконалень після GA:
- Мультисинхронізація та двостороння синхронізація для сценаріїв живої реплікації.
- Пріоритетне заповнення з кількох записів
dataSourceRef
. - Крос-постачальницькі pipeline, які об’єднують різних популяторів (наприклад, MySQL → CSV → MinIO buckets).
Якщо у вас є додаткові випадки використання—наприклад, інтеграція з об’єктним сховищем, оркестрація ETL pipeline або створення операторів резервного копіювання—приєднуйтесь до обговорень у SIG Storage або подайте запит на репозиторій lib-volume-populator. Відгуки з реальних впроваджень продовжують впливати на пріоритети дорожньої карти для версії 1.34 та наступних.