В каждой статье, которую я видел в Интернете о запуске кластера Cassandra в Kubernetes, либо опускалось поле podManagementPolicy
, либо устанавливалось значение OrderedReady
, что по сути одно и то же, потому что это значение по умолчанию.
Мне было интересно, можно ли использовать podManagementPolicy: Parallel
для ускорения процесса синхронизации при перезапуске нескольких узлов кластера Cassandra.
Да, это работает нормально. Мы используем podManagementPolicy: Parallel
во всех наших наборах состояний, которые также включают в себя кластер cassandra. Это действительно помогло нам во всем сценарии перезапуска кластера, когда все модули запускаются одновременно и синхронизируются.
Вариант использования podManagementPolicy: Parallel
в нашем кластере:
У нас есть 3-узловой baremetal-кластер K8s и 3-узловой кластер cassandra поверх него, использующий local-storage
узла для PV. В случае local-storage
PV привязан к узлу. Итак, если мы установим podManagementPolicy: OrderedReady
, то проблема в том, что если мы выведем из строя 2 узла кластера, которые, скажем, cds-pod-1
и cds-pod-2
, оба перейдут в неизвестное состояние. Теперь предположим, что мы поднимаем узел там, где находится cds-pod-2
, тогда он не поднимает этот модуль, потому что ему нужно, чтобы cds-pod-1
находился в рабочем состоянии, чтобы перевести cds-pod-2
в рабочее состояние. Следовательно, мы должны изменить podManagementPolicy: Parallel
, и тогда вы можете вызвать капсулу любым способом, не зависящим от порядка.
Насколько я знаю, это плохая идея. Я попробовал, и последний узел перешел в CrashLoopBackoff. Похоже, причина в том, что присоединение узлов дает сбой, если они видят, что другой узел пытается присоединиться в то же время.
podManagementPolicy: OrderedReady
должен быть путь.
Параллельное управление PodManagement по-прежнему является безопасной операцией. Поскольку Cassandra образует кольцо и не использует архитектуру master/slave, параллельный запуск модулей допустим. Однако до тех пор, пока семенные коробочки не запущены, остальные реплики будут присоединяться к аварийному циклу до тех пор, пока семенные коробочки не будут в рабочем состоянии. Может потребоваться несколько перезапусков, но они должны подняться.