Sobes.tech
Middle

Kubernetes'te, her biri kendi depolama alanına sahip üç replikalı bir veritabanı nasıl dağıtılır? Hangi nesne kullanılır ve neden? Yerel olarak nasıl bir kanarya dağıtımı gerçekleştirilir — önce on poddan birini güncelle, sonra karar verilir mi?

sobes.tech yapay zeka

AI'dan gelen yanıt

Для развёртывания базы данных в Kubernetes с тремя репликами, у каждой из которых своё хранилище, следует использовать объект StatefulSet.

Почему StatefulSet?

  • StatefulSet гарантирует уникальные и стабильные идентификаторы подов (имена).
  • Каждый под получает своё постоянное хранилище через PersistentVolumeClaim, что важно для баз данных.
  • Обеспечивает упорядоченное создание, обновление и удаление подов.

Пример: каждый из трёх подов будет иметь свой PVC, обеспечивающий отдельное хранилище.


Для нативной реализации канареечного деплоймента в Kubernetes можно использовать RollingUpdate стратегию с параметром maxUnavailable и maxSurge, но чтобы сначала обновить только один под из десяти, а дальше — по решению, нужно применить Pause и Resume обновления или использовать Manual Rollout.

Пример подхода:

  • Начать обновление с одного пода, указав maxUnavailable: 1.
  • После проверки состояния и принятия решения, продолжить обновление остальных подов вручную командой:
kubectl rollout pause statefulset/your-db
# Проверяем состояние
kubectl rollout resume statefulset/your-db

Таким образом, можно контролировать процесс обновления, останавливая и возобновляя его по необходимости, что реализует канареечный деплоймент с ручным подтверждением после первого обновления.