Узел не обновляется: bashible пишет «Steps are waiting for approval to start»

Viewed 29

Поменял NodeGroupConfiguration (или обновляется версия Kubernetes), а на части узлов ничего не меняется: в d8 k get ng UPTODATE меньше NODES. Поставил на узел аннотацию disruption-approved, не помогло.

1 Answers

Смотрим лог на узле:

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.