Обновление серверных компонентов YTsaurus
Важно
Ниже описано, как выполнить обновление с использованием оператора версии 0.32.0 и новее. О различиях со старыми версиями смотрите в разделе Переход с enableFullUpdate на updatePlan.
В этой статье описан процесс полного обновления серверных компонентов кластера YTsaurus через Kubernetes-оператор: как подготовиться к обновлению, обновить оператор, изменить спецификацию Ytsaurus, отследить ход обновления и проверить результат.
Что важно знать перед обновлением
- Обновляйтесь только на следующую мажорную версию.
- Обновляйте кластер по порядку мажорных версий, не пропуская промежуточные: сначала
25.1 → 25.2, затем25.2 → 25.3. Пропуск версии может нарушить работу кластера. Внутри целевой мажорной версии вы можете выбрать самую свежую минорную и получить последние обновления — например,25.2.0 → 25.3.2. Доступные версии смотрите в списке релизов. - Обновление нельзя отменить.
- После того как мастер-серверы вышли из режима
read-onlyи применили необратимые изменения, откат на предыдущую версию не поддерживается. - Сначала обновляйте оператор, потом кластер.
- Перед обновлением кластера обновите оператор. Его версия должна быть совместима с целевой версией кластера. Проверьте совместимость по таблице совместимости.
- Во время обновления кластер может быть недоступен.
- По умолчанию кластер полностью недоступен на время обновления — все операции и запросы прерываются. Планируйте обновление на период минимальной нагрузки. Если кластер должен оставаться доступным, выберите другую стратегию — смотрите Стратегии обновления.
Обновление без остановки кластера
Если требуется обновить кластер без остановки, настройте стратегию RollingUpdate через поле updatePlan. Пример — в разделе Обновление без остановки кластера через RollingUpdate.
Обновление кластера
Процесс обновления состоит из четырёх шагов:
1. Подготовьте кластер к обновлению
Перед изменением спецификации Ytsaurus проверьте текущее состояние кластера и убедитесь, что оператор готов начать новый цикл обновления.
-
Узнайте текущую версию кластера:
$ kubectl get ytsaurus <cluster_name> -n <namespace> -o jsonpath='{.spec.coreImage}' ghcr.io/ytsaurus/ytsaurus:stable-25.1.0-relwithdebinfo -
Проверьте состояние кластера:
$ kubectl get ytsaurus <cluster_name> -n <namespace> NAME CLUSTERSTATE UPDATESTATE UPDATINGCOMPONENTS BLOCKEDCOMPONENTS ytsaurus RunningПеред обновлением кластер должен находиться в состоянии
Running. Если кластер в другом состоянии, сначала устраните проблемы — смотрите раздел Решение проблем. -
Убедитесь, что оператор готов к обновлению. Для этого проверьте его логи:
kubectl logs -n <namespace> deployment/ytsaurus-ytop-chart-controller-manager --tail=100 # Если имя deployment отличается, получите его список kubectl get deployments -n <namespace>Это важный шаг: оператор не должен быть занят незавершёнными действиями. Переходите к следующему шагу только тогда, когда в логах есть сообщение
INFO Ytsaurus is running and happy. Это значит, что оператор считает кластер согласованным и не выполняет незавершённых действий.Важно
Если оператор не пишет
running and happy, не начинайте обновление. Это может привести к непредсказуемому поведению кластера. -
Сохраните резервную копию спецификации:
Файл необходим для возможности отката до прохождения точки невозврата:
kubectl get ytsaurus <cluster_name> -n <namespace> -o yaml > ytsaurus-spec-backup.yamlПосле того как мастер-серверы вышли из режима
read-onlyи применили необратимые изменения, откат на предыдущую версию не поддерживается.
Если все проверки пройдены, можно приступать к обновлению оператора.
2. Обновите оператор
Оператор следует обновлять первым. Новые версии серверных компонентов могут работать некорректно со старой версией оператора.
Внимание
Новая версия оператора может сразу запустить обновление кластера — без изменения coreImage с вашей стороны. Это происходит, если новая версия оператора генерирует статические конфиги иначе, чем старая: оператор обнаруживает расхождение и начинает reconciliation. Подробнее о причинах и способах остановить нежелательное обновление — в разделе Автоматическое обновление после обновления оператора.
Проверьте текущую версию оператора:
helm list -n <namespace>
Список релизов и совместимых версий смотрите на странице релизов и в таблице совместимости.
Обновите оператор:
helm upgrade ytsaurus --install oci://ghcr.io/ytsaurus/ytop-chart --version <new_version>
Проверьте, что оператор обновился:
kubectl get pods -n <namespace>
Сразу после обновления могут быть видны старый и новый pod одновременно:
NAME READY STATUS RESTARTS AGE
ytsaurus-ytop-chart-controller-manager-6f67fd5d5c-6bbws 2/2 Running 0 21s
ytsaurus-ytop-chart-controller-manager-7478f9b6cb-qr8wd 2/2 Terminating 0 23h
Через некоторое время старый pod удалится:
NAME READY STATUS RESTARTS AGE
ytsaurus-ytop-chart-controller-manager-6f67fd5d5c-6bbws 2/2 Running 0 25s
3. Запустите обновление
При изменении поля coreImage в спецификации Ytsaurus оператор пересоздаёт pod'ы всех серверных компонентов из этой спецификации, даже если образ конкретного компонента не изменился. Это гарантирует совместимость версий всех серверных компонентов.
Компоненты с собственным релизным циклом — Query Tracker, YQL-агент и другие — при этом не обновляются. Как их обновить, смотрите в разделе Обновление отдельных компонентов. Перед обновлением проверьте совместимость этих компонентов с целевой версией кластера в таблице совместимости.
Сохраните актуальную спецификацию в файл для редактирования:
kubectl get ytsaurus <cluster_name> -n <namespace> -o yaml > ytsaurus-spec-new.yaml
Внимание
Сохраняйте спецификацию только с вашего работающего кластера через команду kubectl get ytsaurus. Не используйте спецификацию из GitHub или другого шаблона: в ней нет ваших текущих настроек — например размеченных дисков, параметров шифрования и кастомных параметров. Применение чистой спецификации может сломать кластер.
Внесите в файл ytsaurus-spec-new.yaml следующие изменения:
-
Задайте поле
updatePlanсо списком компонентов, которые нужно обновить. Для полного обновления укажите классEverything— обновятся все серверные компоненты. -
Измените
coreImageна следующую версию. -
Целевую версию выбирайте на странице релизов. Откройте нужный релиз и скопируйте тег образа
ghcr.io/ytsaurus/ytsaurus.
spec:
coreImage: ghcr.io/ytsaurus/ytsaurus:stable-25.2.0-relwithdebinfo # Следующая версия
updatePlan:
- class: Everything # Полное обновление всех серверных компонентов
Важно
Обновляйтесь только на стабильную версию, следующую за текущей. Не используйте dev-образы из ветки main. После успешного обновления откат на предыдущую версию не поддерживается.
По умолчанию оператор использует стратегию BulkUpdate — кластер будет полностью недоступен на время обновления. Если кластер должен оставаться доступным, настройте стратегию RollingUpdate через поле updatePlan в файле ytsaurus-spec-new.yaml до применения изменений. Пример — в разделе Обновление без остановки кластера через RollingUpdate.
Примените изменённую спецификацию:
kubectl apply -f ytsaurus-spec-new.yaml
Ожидаемый вывод:
ytsaurus.cluster.ytsaurus.tech/<cluster_name> configured
Отслеживайте статус в поле UPDATESTATE ресурса Ytsaurus:
kubectl get ytsaurus <cluster_name> -n <namespace>
Во время обновления вывод может выглядеть следующим образом:
NAME CLUSTERSTATE UPDATESTATE UPDATINGCOMPONENTS
ytsaurus Updating WaitingForPodsCreation {ms hp ds dnd rp end tnd sch ca}
Описание этапов и состояний pod'ов — в справочнике статусов ниже.
Проверяйте состояние pod'ов:
kubectl get pods -n <namespace>
Примечание
Обновление может занять некоторое время, так как оператор сначала скачивает новый Docker-образ и только потом запускает обновлённые компоненты. Чтобы образы были готовы заранее и обновление проходило быстрее, настройте предзагрузку образов.
Если обновление идёт слишком долго, проверьте события проблемного pod'а:
kubectl describe pod <pod_name> -n <namespace> | grep -A 10 "Events:"
Если в событиях указана ошибка загрузки образа ImagePullBackOff, проверьте, что тег образа указан правильно и эта версия есть в реестре. Если pod в состоянии Pending, проблема связана с ресурсами — проверьте их доступность в кластере.
4. Проверьте результат
Обновление завершено при выполнении следующих условий:
- кластер находится в состоянии
Running; - все основные pod'ы находятся в состоянии
Running; - в кластере нет pod'ов в состояниях
Init,Pending,ImagePullBackOffиCrashLoopBackOff.
Проверьте итоговое состояние кластера:
kubectl get ytsaurus <cluster_name> -n <namespace>
Ожидаемый вывод:
NAME CLUSTERSTATE UPDATESTATE UPDATINGCOMPONENTS BLOCKEDCOMPONENTS
ytsaurus Running
Проверьте состояние pod'ов:
kubectl get pods -n <namespace>
Пример ожидаемого результата:
NAME READY STATUS RESTARTS AGE
ca-0 1/1 Running 0 5m
dnd-0 1/1 Running 0 5m
dnd-1 1/1 Running 0 5m
dnd-2 1/1 Running 0 5m
ds-0 1/1 Running 0 10m
end-0 2/2 Running 0 5m
hp-0 1/1 Running 0 5m
ms-0 1/1 Running 0 10m
qt-0 1/1 Running 15 75d
rp-0 1/1 Running 0 5m
sch-0 1/1 Running 0 5m
tnd-0 1/1 Running 0 10m
Проверьте, что в спецификации указана новая версия:
kubectl get ytsaurus <cluster_name> -n <namespace> -o jsonpath='{.spec.coreImage}'
Ожидаемый вывод:
ghcr.io/ytsaurus/ytsaurus:stable-25.2.0-relwithdebinfo
Убедитесь, что оператор снова пишет в логах Ytsaurus is running and happy:
kubectl logs -n <namespace> deployment/ytsaurus-ytop-chart-controller-manager --tail=100
После успешного обновления очистите поле updatePlan в файле ytsaurus-spec-new.yaml — оставьте его пустым:
spec:
updatePlan: []
Того же результата можно добиться явным правилом с классом Nothing — оператор не будет обновлять ни один компонент:
spec:
updatePlan:
- class: Nothing
Примените изменение:
kubectl apply -f ytsaurus-spec-new.yaml
Оператор не очищает updatePlan автоматически — сбросьте его сами. Пустой updatePlan означает «не обновлять ничего» и защищает от случайного перезапуска компонентов при дальнейших изменениях спецификации. Если оставить - class: Everything, то при следующем изменении coreImage снова запустится полное обновление всех компонентов.
Обновление на следующую версию. Если нужно обновиться ещё на одну версию, повторите все шаги, начиная с раздела Подготовка к обновлению. Каждый раз сохраняйте спецификацию заново через kubectl get ytsaurus — оператор мог изменить её в процессе обновления, и локальный файл с прошлого раза уже не актуален.
Решение проблем при обновлении
Используйте этот раздел, если обновление не запускается, идёт слишком долго, завершается с ошибкой или ведёт себя непредсказуемо.
Конфликт версий при применении спецификации
При попытке применить спецификацию возникла ошибка конфликта версий:
Error from server (Conflict): error when applying patch: the object has been modified; please apply your changes to the latest version and try again
Это означает, что спецификацию изменил другой процесс. Сохраните актуальную версию спецификации и повторите изменение:
kubectl get ytsaurus <cluster_name> -n <namespace> -o yaml > ytsaurus-spec-new.yaml
Образ не найден
Ошибка загрузки образа:
Failed to pull image "ghcr.io/ytsaurus/ytsaurus:stable-X.X.X-relwithdebinfo": not found
Проверьте, что:
- тег образа указан правильно;
- эта версия есть в реестре.
Pod долго находится в состоянии Init
Такое поведение возможно, когда Kubernetes ещё скачивает новый образ.
kubectl describe pod <pod_name> -n <namespace> | grep -A 10 "Events:"
Пример нормального процесса:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 3m10s default-scheduler Successfully assigned ytsaurus/ms-0 to docker-desktop
Normal Pulling 3m9s kubelet Pulling image "ghcr.io/ytsaurus/ytsaurus:stable-25.2.0-relwithdebinfo"
Если pod так и остаётся в состоянии Init дольше ожидаемого времени, проверьте логи pod'а и события для выявления проблемы.
Джоб находится в состоянии CrashLoopBackOff
Например, вы можете увидеть yt-scheduler-init-job-op-archive в состоянии CrashLoopBackOff.
Во время обновления это может быть временным состоянием. Джоб может стартовать раньше, чем кластер полностью подготовит таблет-целлы. Из-за этого джоб уходит в цикл перезапусков, но позже обычно сходится — это нормально.
Сначала проверьте общий статус кластера:
kubectl get ytsaurus <cluster_name> -n <namespace>
Если кластер продолжает обновляться, подождите завершения процесса и проверьте состояние джоба повторно. Если кластер не обновляется или джоб не сходится в течение длительного времени, проверьте логи джоба для выявления причины проблемы.
Оператор не запускает обновление
Проверьте, что:
- в поле
updatePlanуказаны компоненты, которые нужно обновить — например- class: Everything. ЕслиupdatePlanпуст, а вы изменилиcoreImage, кластер перейдёт в состояниеUpdateBlockedи обновление не начнётся; - оператор уже завершил предыдущие действия, и в логах есть
running and happy; - кластер до начала обновления находился в состоянии
Running; - проверьте логи оператора:
kubectl logs -n <namespace> deployment/ytsaurus-ytop-chart-controller-manager --tail=100
Обновление перешло в состояние ImpossibleToStart
Kubernetes-оператор может остановить обновление, если считает его небезопасным. Например, если часть таблет-целл bundle'ов находится в плохом состоянии — таблет-целлы не работают или имеют ошибки. В этом случае обновление не начнётся, пока вы не устраните проблему.
Проверьте статус ресурса:
kubectl get ytsaurus -n <namespace>
Пример вывода:
NAME CLUSTERSTATE UPDATESTATE UPDATINGCOMPONENTS
minisaurus Updating ImpossibleToStart
Чтобы узнать причину, выполните команду:
kubectl describe ytsaurus -n <namespace>
И проверьте блок Conditions в UpdateStatus.
Пример причины невозможности запуска обновления
kubectl describe ytsaurus -n <namespace>
...
Update Status:
Conditions:
Last Transition Time: 2023-09-26T09:18:11Z
Message: Tablet cell bundles ([sys default]) aren't in 'good' health
Reason: Update
Status: True
Type: NoPossibility
State: ImpossibleToStart
Если обновление нельзя запустить, верните спецификацию к предыдущему значению. После этого оператор отменит обновление и вернёт кластер в состояние Running.
Нераспознаваемые опции мастера после обновления
После обновления кластера в конфигах master-серверов могут остаться нераспознанные опции, которые перестали использоваться в новой версии YTsaurus. Особенно часто это случается при мажорных обновлениях. В этом случае вы увидите предупреждение:
Found unrecognized options in dynamic cluster config
Удалить нераспознанные опции мастера можно двумя способами:
- Командой CLI — yt admin remove-master-unrecognized-options. Этот способ поддерживает флаг
--dryдля предварительного просмотра изменений. - Standalone-скриптом — remove_master_unrecognized_options из репозитория на GitHub.
Дополнительные сценарии
Обновление отдельных компонентов
Внимание
Используйте частичное обновление только в редких случаях, например для исправления ошибки. Рекомендуем предварительно обсудить такое решение с командой YTsaurus.
Более новая версия одного из компонентов может требовать определённую версию мастер-серверов. Если зависимости не соблюдены, кластер может не запуститься. Для обновления кластера рекомендуется использовать обновление через поле coreImage. Это гарантирует совместимость версий всех серверных компонентов.
В спецификации Ytsaurus можно управлять образами компонентов по отдельности. То, как оператор обрабатывает такие изменения, зависит от типа компонента:
-
Компоненты с собственным релизным циклом — Query Tracker, YQL-агент, Strawberry и другие. Подробнее — в разделе Компоненты с собственным релизным циклом.
Для обновления этих компонентов измените поле
imageв спецификацииYtsaurus. Это единственный способ обновления этих компонентов. При изменении их образа оператор обновит только их pod'ы, не останавливая работу кластера.При полном обновлении кластера через поле
coreImagepod'ы этих компонентов перезапустятся, но их образ останется прежним — тем, что задан в полеimage.Пример: обновление Query Tracker до версии
0.0.7:spec: queryTrackers: image: ghcr.io/ytsaurus/query-tracker:0.0.7kubectl apply -f ytsaurus-spec-new.yamlОператор обновит только pod'ы
qt, не затрагивая остальные компоненты. -
Точечное обновление серверных компонентов
Вы можете переопределить образ для конкретного серверного компонента — например только для
tabletNodes, указав для него отдельныйimageвместо общегоcoreImage.Укажите поле
imageдля нужного компонента в файлеytsaurus-spec-new.yamlи примените изменение:kubectl apply -f ytsaurus-spec-new.yaml
Обновление статических конфигов
Оператор автоматически генерирует конфигурационные файлы для каждого компонента — мастер-серверов, прокси, нод — на основе спецификации Ytsaurus. Иногда нужно изменить параметры, которые попадают в эти файлы, — например добавить новое место хранения locations или настроить специфичные параметры компонента через configOverrides.
В таких случаях не задавайте поле updatePlan. Достаточно изменить спецификацию и применить её — оператор сам обнаружит, что конфигурация изменилась, и перезапустит только pod'ы затронутых компонентов.
Внесите нужные изменения в ytsaurus-spec-new.yaml и примените:
kubectl apply -f ytsaurus-spec-new.yaml
Во время перезапуска pod'ов кластер перейдёт в состояние Reconfiguration:
kubectl get ytsaurus <cluster_name> -n <namespace>
NAME CLUSTERSTATE UPDATESTATE
ytsaurus Reconfiguration
После того как pod'ы перезапустятся и станут готовы, кластер вернётся в Running.
Автоматическое обновление после обновления оператора
При обновлении оператора его новая версия может автоматически запустить обновление кластера — без изменения coreImage с вашей стороны. Это происходит потому, что разные версии оператора могут генерировать разные конфигурационные файлы для одних и тех же компонентов — например, в новой версии может добавиться поле. Оператор замечает расхождение между текущим состоянием кластера и желаемым и запускает reconciliation.
Если обновление окажется невозможным, кластер останется в состоянии Updating, а UPDATESTATE перейдёт в ImpossibleToStart. В этом случае есть два варианта:
-
Откатить оператор до предыдущей версии:
helm rollback ytsaurus -n <namespace> -
Оставить поле
updatePlanпустым в спецификацииYtsaurus— оператор отменит обновление и не будет запускать его автоматически:spec: updatePlan: []kubectl apply -f ytsaurus-spec-new.yamlПосле этого приведите кластер в рабочее состояние и повторите попытку, когда будете готовы, задав в
updatePlanнужные компоненты — например- class: Everything.
Обновление без остановки кластера через RollingUpdate
Чтобы кластер оставался доступным во время обновления, настройте стратегию RollingUpdate через поле updatePlan в спецификации Ytsaurus. Оператор обновит pod'ы по одному, сохраняя минимальное количество доступных инстансов.
Требования
Для корректной работы RollingUpdate у каждого обновляемого компонента должно быть минимум 2 инстанса. Если инстанс один, при его обновлении компонент будет недоступен так же, как при BulkUpdate. Для мастер-серверов RollingUpdate пока не реализован — они обновляются через BulkUpdate или OnDelete.
Подробнее о стратегии, доступности компонентов и рекомендуемом количестве инстансов — в разделе Стратегия RollingUpdate.
Минимальный пример: RollingUpdate для всех компонентов
apiVersion: cluster.ytsaurus.tech/v1
kind: Ytsaurus
metadata:
name: ytsaurus
spec:
coreImage: ghcr.io/ytsaurus/ytsaurus:stable-25.2.0-relwithdebinfo
updatePlan:
- class: Everything
strategy:
rollingUpdate: {}
Своя стратегия для каждого компонента для production
updatePlan:
# HTTP Proxies — Rolling Update
- component:
type: HttpProxy
strategy:
rollingUpdate: {}
runPreChecks: true
# RPC Proxies — Rolling Update
- component:
type: RpcProxy
strategy:
rollingUpdate: {}
runPreChecks: true
# Data Nodes — Rolling Update
- component:
type: DataNode
strategy:
rollingUpdate: {}
runPreChecks: true
# Exec Nodes — Rolling Update с drain
- component:
type: ExecNode
strategy:
rollingUpdate: {}
runPreChecks: true
# Остальные компоненты — BulkUpdate
- class: Everything
concurrency: 2 # не более 2 instance groups одновременно
RollingUpdate с предзагрузкой образов
Флаг enableImageHeater скачивает новые образы на узлы до начала обновления. Вместе с RollingUpdate это сокращает время переключения pod'ов:
apiVersion: cluster.ytsaurus.tech/v1
kind: Ytsaurus
metadata:
name: ytsaurus
spec:
coreImage: ghcr.io/ytsaurus/ytsaurus:stable-25.2.0-relwithdebinfo
clusterFeatures:
enableImageHeater: true
updatePlan:
- class: Everything
strategy:
rollingUpdate: {}
Подробнее о предзагрузке — в разделе Предзагрузка образов.
Описание всех полей updatePlan — в разделе Настройка поля updatePlan.
Ручное вмешательство
Внимание
Перед ручным вмешательством рекомендуется проконсультироваться с командой YTsaurus.
Если автоматическое обновление не может завершиться и нужно выполнить ручные действия, временно отключите управление кластером со стороны оператора. Для этого установите в спецификации Ytsaurus флаг isManaged: false.
После этого оператор перестанет вносить изменения в кластер, и вы сможете выполнить ручные действия.
Этот сценарий может быть полезен, если оператор застрял на проблемном компоненте. Также он поможет, если нужно вручную проверить или восстановить состояние части кластера. Или если вы разбираете нестандартную ошибку, которую нельзя устранить обычным повторным применением спецификации.
Справочник статусов
Как проверить статус кластера
Следить за обновлением можно по статусу ресурса Ytsaurus:
kubectl get ytsaurus -n <namespace>
Во время обновления кластер переходит в состояние Updating, а подробный этап отображается в поле UPDATESTATE. После завершения обновления кластер возвращается в состояние Running:
NAME CLUSTERSTATE UPDATESTATE UPDATINGCOMPONENTS
minisaurus Running None
UPDATESTATE
Не все статусы появляются при каждом обновлении — набор зависит от того, какие компоненты затронуты. Например, статусы WaitingForTabletCells появляются только при обновлении tablet-нод, WaitingForOpArchiveUpdate — только при обновлении планировщика.
Таблица статусов поля UPDATESTATE
|
Статус |
Условие |
Описание |
|
|
— |
Обновление не выполняется |
|
|
Если включена предзагрузка образов |
Оператор ожидает предзагрузки нового образа на узлы кластера |
|
|
Если обновляются мастер-серверы или tablet-ноды |
Оператор проверяет, безопасно ли запускать обновление |
|
|
— |
Оператор не может запустить обновление. Например, таблет-целлы bundle'ов в плохом состоянии. Обновление не начнётся, пока вы не устраните проблему |
|
|
Если обновляются мастер-серверы |
Оператор включает safe mode — запрещает запись в кластер на время обновления мастер-серверов |
|
|
Если обновляются tablet-ноды |
Оператор сохраняет текущую топологию таблет-целлы перед их удалением |
|
|
Если обновляются tablet-ноды |
Оператор инициирует удаление таблет-целлы |
|
|
Если обновляются tablet-ноды |
Оператор ожидает полного удаления таблет-целлы |
|
|
Если обновляются data-ноды или мастер-серверы |
Оператор ожидает исчезновения «воображаемых» чанков — временных метаданных, создаваемых при перебалансировке данных |
|
|
Если обновляются мастер-серверы |
Оператор ожидает, пока мастер-серверы сохранят снапшоты своего состояния |
|
|
Всегда |
Оператор удаляет старые pod'ы обновляемых компонентов |
|
|
Всегда |
Оператор ожидает запуска новых pod'ов с обновлённым образом |
|
|
Если обновляются мастер-серверы |
Оператор ожидает, пока мастер-серверы выйдут из режима read-only после перезапуска |
|
|
Если обновляются мастер-серверы |
Оператор подготавливает инициализацию sidecar-контейнеров |
|
|
Если обновляются мастер-серверы |
Оператор инициализирует sidecar-контейнеры |
|
|
Всегда |
Оператор применяет изменения в дереве метаинформации Cypress после обновления компонентов |
|
|
Если обновляются tablet-ноды |
Оператор восстанавливает таблет-целлы на обновлённых нодах |
|
|
Если обновляется планировщик |
Оператор подготавливает обновление operational archive |
|
|
Если обновляется планировщик |
Оператор обновляет operational archive — внутреннее хранилище метаданных операций |
|
|
Если обновляется query tracker |
Оператор подготавливает обновление состояния query tracker |
|
|
Если обновляется query tracker |
Оператор обновляет состояние query tracker |
|
|
Если обновляется YQL-агент |
Оператор подготавливает обновление состояния YQL-агента |
|
|
Если обновляется YQL-агент |
Оператор обновляет состояние YQL-агента |
|
|
Если обновляется queue agent |
Оператор подготавливает обновление состояния queue agent |
|
|
Если обновляется queue agent |
Оператор обновляет состояние queue agent |
|
|
Если обновляются мастер-серверы |
Оператор выключает safe mode после успешного обновления мастер-серверов |
|
|
Всегда |
Оператор ожидает готовности Timbertruck — компоненты для сбора структурированных логов |
CLUSTERSTATE
Таблица статусов поля CLUSTERSTATE
|
Статус |
Описание |
|
|
Кластер создан, но ещё не инициализирован |
|
|
Кластер инициализируется впервые |
|
|
Кластер работает нормально |
|
|
Оператор применяет изменения конфигурации без полного обновления компонентов |
|
|
Кластер обновляется |
|
|
Образ изменён, но |
|
|
Обновление завершается — оператор применяет финальные изменения |
|
|
Оператор отменяет обновление и возвращает кластер в состояние |
Состояния pod'ов
Таблица статусов состояния pod'ов
|
Статус |
Описание |
|
|
Инициализация pod'а |
|
|
Ожидание ресурсов |
|
|
Создание контейнера |
|
|
Pod работает |
|
|
Ошибка загрузки образа |
|
|
Pod падает и перезапускается |
Справочник компонентов
Компоненты, которые обновятся вместе с кластером
Оператор обновляет эти компоненты одновременно с кластером при изменении поля coreImage в спецификации Ytsaurus. Для каждого компонента можно переопределить образ отдельно через поле image.
Таблица компонентов, которые обновятся вместе с кластером
|
Компонент |
Поле в спецификации |
|
Master primary, secondary |
|
|
Master caches |
|
|
HTTP-прокси |
|
|
RPC-прокси |
|
|
TCP-прокси |
|
|
Kafka-прокси |
|
|
Cypress-прокси |
|
|
Data nodes |
|
|
Exec nodes |
|
|
Tablet nodes |
|
|
Discovery |
|
|
Scheduler |
|
|
Controller agents |
|
|
Queue agents |
|
|
Tablet balancer |
|
|
Bundle controller |
|
Компоненты с собственным релизным циклом
Компоненты имеют собственные релизные циклы, оператор обновляет их независимо через поле image конкретного компонента в спецификации Ytsaurus.
Таблица компонентов с собственным релизным циклом
|
Компонент |
Поле в спецификации |
|
Query trackers |
|
|
YQL agents |
|
|
Strawberry controller |
|