TGViewer
DevOps 413 DevOps 413 @devops413 · 456 subscribers
Post #10 840
👉 Кейс: Мигрируем тома в Kubernetes

Разбираем реальную задачу. Задача для middle и выше: миграция данных между томами в рамках смены CSI.

🎯 Задача: Перенести данные из старого в новый PVC, созданный уже новым CSI-драйвером. Без потерь и с минимальным временем простоя.
Как будете декомпозировать задачу и какие инструменты будете использовать? Предлагаю использовать утилиты pv-migrate и rename-pvc.

🧠 Декомпозиция:

1. Подготовка: Создать новый PVC в целевом хранилище. Убедиться, что поды, использующие старый том, остановлены.
2. Миграция: Перекачать данные из старого PVC в новый.
3. Переключение: "Подменить" старый том новым для рабочей нагрузки.
4. Финал: Протестировать и убрать старые артефакты.

🛠 Инструмент: pv-migrate

Это утилита, которая превращает сложный процесс в одну команду. Её магия в том, что она:
* Автоматически создаёт мигрирующий Pod с доступом к обоим томам (источнику и назначению).
* Сама выбирает стратегию копирования (например, mnt2 — монтирует оба тома в один под и использует rsync).
* Берет на себя: проверки, мониторинг прогресса, очистку за собой.

По сути, вы говорите "скопируй вот этот том в тот", а pv-migrate делает всё остальное. Проще не бывает!

📋 План действий и команды

⚠️ Золотое правило: "7 раз отмерь — 1 раз отрежь". Даже на dev потеря данных — это боль. Не забываем о бэкапах!

1. Останавливаем нагрузку.

kubectl scale deploy -n user-ns app --replicas=0

2. Подготавливаем новый PVC с идентичными labels, используя новый StorageClass.
3. Запускаем миграцию.

NAMESPACE=user-ns
PVC_NAME="app-pv"

kubectl pv-migrate \
--strategies mnt2 \
--source-namespace=$NAMESPACE \
--source=$PVC_NAME \
--dest-namespace=$NAMESPACE \
--dest=$PVC_NAME-new

Ждём успешного завершения. В логах будет виден прогресс.
4. "Переключаем" тома. Переименовываем PVC, чтобы приложение начало использовать новый том.

# Переименовываем старый PVC
kubectl rename-pvc --yes -n $NAMESPACE $PVC_NAME $PVC_NAME-old

# Переименовываем новый PVC
kubectl rename-pvc --yes -n $NAMESPACE $PVC_NAME-new $PVC_NAME

5. Запускаем приложение.

kubectl scale deploy -n user-ns app --replicas=1

6. Проверяем, что под поднялся и данные на месте.
7. Удаляем старый PVC, когда уверены, что он больше не нужен.

💎 Итог

Весь процесс миграции свелся к нескольким командам. Утилита pv-migrate скрывает за собой всю сложность и позволяет делать рискованные операции предсказуемо и безопасно.

Sources: pv-migrate | rename-pvc
  • 👍 4
  • ❤‍🔥 1
More from @devops413
  1. Oct 10, 2026Мой личный роадмап по DevOps Вчера выступала на SysAdmin conf с докладом про переход в Dev…
  2. Oct 8, 2026Есть такой легендарный человек @kruchkov_alexandr, который известен инженерному комьюнити…
  3. Oct 6, 2026Не знаешь кубер 🖼️ - не инженер Это частое заблуждение. Инженеры бывают разными и в новом…
  4. Sep 9, 2026Post #56
  5. Sep 3, 2026Осень встречает нас большим количеством интересных бесплатных конференций 🍂. Иду на них с…
  6. Sep 2, 2026Уже через неделю в следующую среду 9 сентября я приму участие в круглом столе на тему «Кри…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →