Управление узлами кластера

Данный раздел содержит инструкции по просмотру состояния узлов кластера, добавлению узлов к кластеру и их перезапуску.

Просмотр состояния узлов кластера

С помощью командной строки

Чтобы просмотреть состояние узлов кластера, выполните следующую команду:

kubectl get nodes -o wide
Пример списка узлов кластера
NAME                                  STATUS   ROLES           AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE               KERNEL-VERSION            CONTAINER-RUNTIME
siem-master01.k8s.dev.rvision.local   Ready    control-plane   140d   v1.26.3   10.99.57.12   <none>        RED OS MUROM (7.3.2)   5.15.131-1.el7.3.x86_64   containerd://1.7.0
siem-worker01.k8s.dev.rvision.local   Ready    <none>          140d   v1.26.3   10.99.57.13   <none>        RED OS MUROM (7.3.2)   5.15.131-1.el7.3.x86_64   containerd://1.7.0
siem-worker02.k8s.dev.rvision.local   Ready    <none>          140d   v1.26.3   10.99.57.11   <none>        RED OS MUROM (7.3.2)   5.15.131-1.el7.3.x86_64   containerd://1.7.0
siem-worker03.k8s.dev.rvision.local   Ready    <none>          140d   v1.26.3   10.99.57.10   <none>        RED OS MUROM (7.3.2)   5.15.131-1.el7.3.x86_64   containerd://1.7.0

Состояние узлов отображается в столбце STATUS. Возможные статусы:

  • Ready: узел исправен и готов к размещению подов.

  • NotReady: узел столкнулся с некоторой проблемой, и на нем нельзя разместить под.

  • SchedulingDisabled: на узле отключено создание новых подов.

  • Unknown: узел недоступен для работы.

С помощью Lens

Чтобы просмотреть состояние узлов кластера:

  1. Подключитесь к кластеру с помощью Lens.

  2. Перейдите в раздел Nodes. В правой части экрана отобразится таблица узлов кластера. Состояние узлов отобразится в столбце Conditions.

Также состояние узлов кластера можно посмотреть в разделе SIEM Инструменты → Мониторинг.

Добавление узла к кластеру

Добавление узла к кластеру производится в два этапа:

  1. Подготовительные работы на узле, добавляемом в кластер:

    1. Установите утилиты, требуемые для подключения узла к кластеру:

      sudo dnf install bash-completion vim telnet chrony jq htop tcpdump zip unzip rsync ebtables ethtool conntrack -y
    2. Настройте синхронизацию времени с сервером времени:

      sudo timedatectl set-ntp true
      sudo sed -i "/^server /d" /etc/chrony.conf
      sudo bash -c 'echo "server <time_server>" >> /etc/chrony.conf'
      sudo systemctl enable --now chronyd
      sudo systemctl restart chronyd
      sudo systemctl status chronyd
      chronyc sources

      Здесь:

      • <time_server> — адрес корпоративного сервера времени (например, ntp.rvision.local).

  2. Работы на управляющем узле:

    1. Внесите в файл inventory/offline-cluster/inventory.ini информацию о новом узле:

      sudo nano inventory/offline-cluster/inventory.ini

      Внесите информацию об узле в группу all и в группу, для которой он предназначен. В качестве образца синтаксиса используйте поля инвентарных данных уже имеющихся в этом файле узлов.

    2. Запустите Ansible-плейбуки для добавления узла в кластер:

      sudo chmod -R 755 inventory/offline-cluster/credentials
      sudo chmod 777 inventory/offline-cluster/credentials
      ansible-playbook -uuser -b -i inventory/offline-cluster/inventory.ini sysprep.yml --extra-vars archive_directory=../../.. --extra-vars sysprep_name=sys-prep-redos
      ansible-playbook -uuser -b -i inventory/offline-cluster/inventory.ini cluster.yml
      cd ~
    3. Отключите offline-репозитории:

      sudo dnf config-manager --set-disabled deps-offline
      sudo dnf config-manager --set-enabled base updates
    4. Проверьте список узлов в кластере:

      sudo kubectl get node
    5. Проверьте, какой набор приложений был развернут с помощью kubespray:

      sudo kubectl get po -A

Перезапуск узла кластера

При выполнении работ по обслуживанию узла кластера (например, обновлению ОС или добавлению вычислительных ресурсов на хост) может понадобиться перезапуск узла. Чтобы сделать это, выполните на узле следующие команды:

  1. Переведите узел в drain-режим:

    kubectl drain <node_name> --ignore-daemonsets

    Здесь:

    • <node_name> — имя узла (например, siem-worker05.k8s.dev.rvision.local).

      Операция drain позволяет перераспределить все поды с узла. В процессе выполнения drain узел помечается как unschedulable. Это предотвращает появление на нем новых подов. Затем drain начинает перемещать поды с узла и завершает работу контейнеров, которые на данный момент запущены на узле, отправляя сигнал TERM контейнерам в поде.
  2. Остановите сервисы kubelet и containerd:

    sudo systemctl stop kubelet
    sudo systemctl stop containerd
  3. Произведите обслуживание узла.

  4. Повторно запустите сервисы kubelet и containerd:

    sudo systemctl start containerd
    sudo systemctl start kubelet
  5. Сделайте узел вновь назначаемым, чтобы на нем появлялись поды:

    kubectl uncordon <node_name>
    kubectl get nodes -o wide

    Здесь:

    • <node_name> — имя узла (например, siem-worker05.k8s.dev.rvision.local).