Как применить обновление, минуя окна обновлений, 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 (см. пример).