StatefulSet, ReplicaSet или DaemonSet. Что лучше для одного стручка?
Я хочу развернуть один Pod на узле для размещения моего сервиса (например, GitLab). Проблема в том, что Pod не будет воссоздан после сбоя узла (например, перезагрузка). Решение (ы): Используйте StatefulSet, ReplicaSet или DaemonSet, чтобы обеспечить создание Pod после сбоя узла. Но что лучше для этого случая?
Этот Pod с состоянием (я использую объем hostPath
хранить данные) и развертывается с использованием nodeSelector
держать его всегда на одном узле.
Вот простой файл YAML для примера: https://pastebin.com/WNDYTqSG
Это создает 3 стручка (один для каждого Set
) с объемом, чтобы хранить данные в состоянии. На практике все эти решения могут удовлетворить мои потребности, но я не знаю, есть ли лучшие практики для этого случая.
Можете ли вы помочь мне выбрать между этими решениями для развертывания одного модуля с состоянием, пожалуйста?
1 ответ
Развертывание является наиболее распространенным вариантом управления модулем или набором модулей. Они обычно используются вместо ReplicaSets, поскольку они более гибкие и создают результаты развертывания в ReplicaSet - см. https://www.mirantis.com/blog/kubernetes-replication-controller-replica-set-and-deployments-understanding-replication-options/
Вам понадобится StatefulSet только в том случае, если у вас есть несколько модулей и требуется выделенное постоянство для каждого модуля, или если у вас было несколько модулей, и модулю нужны отдельные имена, потому что они связаны друг с другом (например, один из них является лидером) - /questions/33240154/razvertyivaniya-kubernetes-protiv-statefulsets/33240158#33240158
DaemonSet будет использоваться, когда вы хотите один Pod / реплику на узел