StatefulSet
Используйте StatefulSet с распределенными приложениями с отслеживанием состояния, которые требуют, чтобы каждый узел имел постоянное состояние . StatefulSet предоставляет возможность настроить произвольное количество узлов для приложения / компонента с отслеживанием состояния с помощью конфигурации (реплик = N).
Существует два типа распределенных приложений с отслеживанием состояния: Master-Master и Master-Slave. Все узлы в конфигурации Master-Master и узлы Slave в конфигурации Master-Slave могут использовать StatefulSet.
Примеры:
Master-Slave -> Datanodes (slave) в кластере Hadoop
Master-Master -> Узлы базы данных (master-master) в кластере Cassandra
Каждый модуль (реплика / узел) в StatefulSet имеет уникальный и стабильный сетевой идентификатор. Например, в Cassandra StatefulSet с именем 'cassandra' и количеством узлов реплик как N каждый модуль (узел) Cassandra имеет:
- Порядковый индекс для каждого пакета: 0,1, .., N-1
- Стабильный сетевой идентификатор: cassandra-0, cassandra-1, .., cassandra-N-1
- Отдельный постоянный том для каждого модуля в соответствии с шаблоном требования тома, т.е. отдельное хранилище для каждого модуля (узла)
- Поды создаются в порядке от 0 до N-1 и завершаются в обратном порядке от N-1 до 0.
Обратитесь: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
Развертывание
«Развертывание», с другой стороны, подходит для приложений / служб без сохранения состояния, когда узлы не требуют какой-либо специальной идентификации. Балансировщик нагрузки может подключиться к любому узлу по своему выбору. Все узлы равны. Развертывание полезно для создания любого количества произвольных узлов с помощью конфигурации (реплик = N).