Как применить обновление, минуя окна обновлений, canary-release и ручной режим обновлений?
Чтобы применить обновление DKP немедленно, установите в соответствующем ресурсе DeckhouseRelease аннотацию release.deckhouse.io/apply-now: "true".
В этом случае будут проигнорированы окна обновления, настройки canary-release и режим ручного обновления кластера. Обновление применится сразу после установки аннотации.
Пример команды установки аннотации пропуска окон обновлений для версии v1.56.2:
d8 k annotate deckhousereleases v1.56.2 release.deckhouse.io/apply-now="true"
Пример ресурса с установленной аннотацией пропуска окон обновлений:
apiVersion: deckhouse.io/v1alpha1
kind: DeckhouseRelease
metadata:
annotations:
release.deckhouse.io/apply-now: "true"
# ... остальная часть манифеста
Как понять, что в кластере идет обновление?
Во время обновления:
- отображается алерт
DeckhouseUpdating; - под
deckhouseнаходится не в статусеReady. Если под долго не переходит в статусReady, это может говорить о наличии проблем в работе DKP. Необходима диагностика.
Как понять, что обновление прошло успешно?
Если алерт DeckhouseUpdating перестал отображаться, это означает, что обновление завершено.
Также вы можете проверить состояние релизов DKP в кластере, используя следующую команду:
d8 k get deckhouserelease
Пример вывода:
NAME PHASE TRANSITIONTIME MESSAGE
v1.46.8 Superseded 13d
v1.46.9 Superseded 11d
v1.47.0 Superseded 4h12m
v1.47.1 Deployed 4h12m
Статус Deployed говорит о том, что произошло переключение на соответствующую версию, но не гарантирует успешное завершение обновления.
Для проверки успешности обновления выведите состояние пода deckhouse:
d8 k -n d8-system get pods -l app=deckhouse
Пример вывода:
NAME READY STATUS RESTARTS AGE
deckhouse-7844b47bcd-qtbx9 1/1 Running 0 1d
- Если под находится в статусе
Runningи в колонкеREADYуказано1/1, это означает, что обновление завершилось успешно. - Если под находится в статусе
Running, но в колонкеREADYуказано0/1, это означает, что обновление еще не завершено. Если так продолжается более 20–30 минут, это может говорить о наличии проблем в работе DKP. Необходима диагностика. - Если под не находится в статусе
Running, это может говорить о наличии проблем в работе DKP. Необходима диагностика.
Если что-то пошло не так
-
Проверьте логи, используя следующую команду:
d8 k -n d8-system logs -f -l app=deckhouse | jq -Rr 'fromjson? | .msg' - Соберите отладочную информацию и свяжитесь с технической поддержкой DKP.
- Попросите помощи у сообщества.
Как узнать, что для кластера доступна новая версия DKP?
Как только на установленном в кластере канале обновления появляется новая версия DKP:
- Загорается алерт
DeckhouseReleaseIsWaitingManualApproval, если кластер использует ручной режим обновлений. - Появляется новый кастомный ресурс DeckhouseRelease. Используйте команду
d8 k get deckhousereleases, чтобы посмотреть список релизов. ЕслиDeckhouseReleaseновой версии находится в состоянииPending, указанная версия еще не установлена. Возможные причины, при которыхDeckhouseReleaseможет находиться вPending:- Установлен ручной режим обновлений.
- Установлен автоматический режим обновлений и настроены окна обновлений, интервал которых еще не наступил.
- Установлен автоматический режим обновлений, окна обновлений не настроены, но применение версии отложено на случайный период времени из-за механизма снижения нагрузки на репозиторий образов контейнеров. В поле
status.messageресурса DeckhouseRelease будет соответствующее сообщение. - Установлен параметр
update.notification.minimalNotificationTimeи заданный в нем интервал еще не прошел.
Как заранее получать информацию о предстоящем обновлении?
Получать заранее информацию об обновлении минорных версий DKP на канале обновлений можно следующими способами:
- Настроить ручной режим обновлений. В этом случае при появлении новой версии на канале обновлений загорится алерт
DeckhouseReleaseIsWaitingManualApproval, и в кластере появится новый кастомный ресурс DeckhouseRelease. - Настроить автоматический режим обновлений и указать минимальное время в параметре
minimalNotificationTime, на которое будет отложено обновление. В этом случае при появлении новой версии на канале обновлений в кластере появится новый кастомный ресурс DeckhouseRelease. Если указать URL в параметреupdate.notification.webhook, через указанный вебхук будет отправлено уведомление об предстоящем обновлении.
Как узнать версию DKP на каждом из каналов обновлений?
Актуальная информация о версиях DKP на разных каналах обновлений доступна на сайте releases.deckhouse.ru.
Что делать, если DKP не получает обновления из настроенного канала?
- Проверьте, что настроен нужный канал обновлений.
-
Проверьте корректность разрешения DNS-имени хранилища образов Deckhouse.
Получите и сравните IP-адреса хранилища образов Deckhouse (
registry.deckhouse.ru) на одном из узлов и в подеdeckhouse. Они должны совпадать.Пример получения IP-адреса хранилища образов Deckhouse на узле:
getent ahosts registry.deckhouse.ruПример вывода:
185.193.90.38 STREAM registry.deckhouse.ru 185.193.90.38 DGRAM 185.193.90.38 RAWПример получения IP-адреса хранилища образов Deckhouse в поде
deckhouse:d8 k -n d8-system exec -ti svc/deckhouse-leader -c deckhouse -- getent ahosts registry.deckhouse.ruПример вывода:
185.193.90.38 STREAM registry.deckhouse.ru 185.193.90.38 DGRAM registry.deckhouse.ruЕсли полученные IP-адреса не совпадают, проверьте настройки DNS на узле. В частности, обратите внимание на список доменов в параметре
searchфайла/etc/resolv.conf(он влияет на разрешение имен в подеdeckhouse). Если в параметреsearchфайла/etc/resolv.confуказан домен, в котором настроено разрешение wildcard-записей, это может привести к неверному разрешению IP-адреса хранилища образов Deckhouse (см. пример).