Статический узел через StaticInstance висит в Pending или Bootstrapping

Viewed 25

Добавляю узел в статический кластер через StaticInstance и SSHCredentials. StaticInstance давно в Pending (иногда в Bootstrapping), узел в кластере не появляется. Что проверить?

1 Answers

По порядку:

  1. Статус, события и лог контроллера:
d8 k get staticinstances
d8 k describe staticinstance <имя>
d8 k -n d8-cloud-instance-manager logs deploy/caps-controller-manager --tail=200
  1. Количество. spec.staticInstances.count в NodeGroup нужно задать явно: по умолчанию оно равно 0, и ни один узел не добавляется. Больше, чем StaticInstance под labelSelector, его ставить нельзя, иначе CAPS ждёт несуществующую машину (алерт CapsInstanceUnavailable). Сам labelSelector после создания изменить нельзя.

  2. SSH. CAPS подключается к узлу по SSH с данными из SSHCredentials. Проверьте:

    • пользователя и ключ (публичный ключ в ~/.ssh/authorized_keys);
    • sudo без пароля или sudo-пароль в SSHCredentials;
    • UsePAM yes в /etc/ssh/sshd_config.

    Если на узле есть fail2ban, убедитесь, что он не заблокировал адреса кластера.

  3. Подсети. Если шаг 000_discover_node_ip.sh завершается ошибкой Failed to discover node_ip that matches internalNetworkCIDRs, укажите в StaticClusterConfiguration internalNetworkCIDRs с подсетями всех узлов. Параметр обязателен, если у узлов больше одного интерфейса:

    d8 system edit static-cluster-configuration
    

    При изменении в список должны попадать и адреса уже существующих узлов.

  4. Лог на самом узле: journalctl -fu bashible.

Чтобы пересоздать StaticInstance: в Pending его можно удалить сразу. Если он в Bootstrapping или Running, сначала запретите добавление узла, дождитесь Pending, удалите StaticInstance (и объект Node, если он появился) и создайте заново:

d8 k label staticinstance <имя> node.deckhouse.io/allow-bootstrap=false

Подробнее в документации: FAQ модуля node-manager (раздел о StaticInstance) и описание ресурсов модуля.