Поменял NodeGroupConfiguration (или обновляется версия Kubernetes), а на части узлов ничего не меняется: в d8 k get ng UPTODATE меньше NODES. Поставил на узел аннотацию disruption-approved, не помогло.
Поменял NodeGroupConfiguration (или обновляется версия Kubernetes), а на части узлов ничего не меняется: в d8 k get ng UPTODATE меньше NODES. Поставил на узел аннотацию disruption-approved, не помогло.
Смотрим лог на узле:
journalctl -u bashible -n 100
Steps are waiting for approval to start значит, что узел ждёт разрешения на обновление. Смотрите аннотации узлов группы:
update.node.deckhouse.io/waiting-for-approval: узел стоит в очереди. Разрешение (approved) Deckhouse выдаёт сам, одновременно не больше чем update.maxConcurrent узлам группы (по умолчанию 1). Вручную approved не ставят. Найдите узел, который его уже получил, и смотрите журнал bashible на нём. Обычно он ждёт подтверждения disruption, это следующий пункт.
d8 k get nodes -o json | jq -r '.items[] | select(.metadata.annotations."update.node.deckhouse.io/approved"=="") | .metadata.name'
update.node.deckhouse.io/disruption-required: обновление требует drain или перезагрузки узла. При disruptions.approvalMode: Manual разрешение выдаёте вы, и drain при этом автоматически не выполняется.
Для рабочих узлов сначала выполните drain, затем поставьте аннотацию:
d8 k drain <узел> --ignore-daemonsets --delete-emptydir-data
d8 k annotate node <узел> update.node.deckhouse.io/disruption-approved=
Для master-узлов drain не выполняйте: для группы master режим всегда должен быть Manual как раз для того, чтобы избежать проблем при drain. Подтверждайте disruption аннотацией update.node.deckhouse.io/disruption-approved= по очереди на каждом master-узле, дожидаясь его перехода в Ready.
Ставьте disruption-approved только на узел, у которого уже есть approved и disruption-required. На другом узле аннотация сейчас ничего не сделает, но останется и молча пропустит disruption при следующем обновлении. Снимите её там:
d8 k annotate node <узел> update.node.deckhouse.io/disruption-approved-
Подробнее в документации: параметр disruptions.approvalMode.