У нас есть набор состояний для службы (история Druid), которая кэширует большое количество данных на локальных SSD.(Мы запускаем один модуль на узел в SSD, используя порты и сходство.) Когда нам нужно заменить базовые машины, это означает, что модули запускаются с пустыми локальными дисками, а затем им требуется некоторое время для заполнения кешей.В идеале нам нужно только выполнить плановую замену узлов (например, обновление пула узлов GKE) по одному узлу за раз и подождать, пока модуль нового узла полностью не заполнит кэш, прежде чем развернуть следующий узел.
ОК, так что это означает, что нам нужно установить PodDisruptionBudget равным 1, и настроить проверку готовности, чтобы новый узел не был готов, пока кэш не был заполнен.
Проблема в том, что система недействительно предлагает отличный способ задать нам вопрос: «pod X загрузил все необходимое для полной репликации системы».
То, что он задает, это «этовся система полностью реплицирована? ".
Таким образом, у нас возникает соблазн написать тест готовности, который говорит" не готов, если вся система полностью не реплицирована ".Но это означает, что во время обновлений пула узлов (или в других коротких случаях с краткими «не полностью реплицированными» состояниями) каждый модуль в наборе состояний будет не готов .
Мой вопрос: яна самом деле не понимаю полного значения каждой части k8, которая обращается к статусу Ready.Было бы плохо, если бы каждый модуль в SS становился не готовым, пока один модуль загружается?
Насколько я понимаю, готовность используется для таких вещей, как управление темпом развертывания развертывания или StatefulSet (который являетсяхорошо), и это также используется для того, чтобы Службы определяли, к каким модулям направлять.В этом случае мы фактически не используем Сервис, связанный с StatefulSet для маршрутизации (клиенты подключаются напрямую к отдельным модулям).Так что кажется, что на самом деле все может быть хорошоНо так ли это?Или есть другие приложения в состоянии «Готов», из-за которых нам было бы плохо помечать все модули как не готовые, пока глобальная репликация не достигает 100%?