Sobes.tech
Middle

In Kubernetes, hoe deploy je een database met drie replicas, elk met hun eigen opslag? Welk object moet je gebruiken en waarom? Hoe implementeer je native een canary deployment — eerst één pod van de tien bijwerken, en daarna alleen als er een beslissing wordt genomen?

sobes.tech AI

Antwoord van AI

Для развёртывания базы данных в 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

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