Установка кластера Kubernetes с помощью Kubespray

Данное руководство описывает процесс офлайн-установки кластера Kubernetes в окружении РЕД ОС с использованием автономного установщика на базе Kubespray. Для установки в окружении других ОС с использованием подключения к Интернету обратитесь к разделу Установка кластера Kubernetes вручную.

Подготовка файлов установщика

Подготовка файлов установщика состоит из следующих этапов:

Скачивание архива установщика

Для установки потребуется архив kubespray-installer-redos.tar.gz для РЕД ОС. Его можно скачать из файлового хранилища R-Vision.

Если у вас есть скачанный установщик системы, архив можно загрузить из его меню. Для этого:

  1. Запустите установщик системы:

    bash ./evo.platform_<version>.run

    Требуемая версия bash: 4.0 или выше.

    Или сделайте файл установщика исполняемым и запустите непосредственно:

    chmod +x ./evo.platform_<version>.run
    ./evo.platform_<version>.run
  2. Выберите режим работы Downloading additional packages.

    install additional packages

  3. Загрузите дополнительный пакет kubespray-installer-redos.tar.gz.

Архив с установочным файлом kubespray-installer-redos.tar.gz необходимо загрузить во временную директорию /tmp.

Распаковка архива

Выполните следующие шаги на управляющем узле или машине администратора:

  1. Загрузите файл kubespray-installer-redos.tar.gz в директорию на сервер, на котором будет производиться установка:

    • Для Windows:

      pscp "<path_to_file>\kubespray-installer-redos.tar.gz" user@server:<installation_dir>
    • Для Linux или macOS

      scp <path_to_file>/kubespray-installer-redos.tar.gz user@server:<installation_dir>

    Здесь:

    • <path_to_file> — путь к каталогу, где находится скачанный файл kubespray-installer-redos.tar.gz.

    • <installation_dir> — директория, в которой будет производиться установка (будет размещен файл дистрибутива evo.platform_<version>_satellite.run).

  2. Распакуйте архив с установочными файлами с помощью следующих команд:

    cd <installation_dir>
    tar xvfz kubespray-installer-redos.tar.gz

    Здесь:

    • <installation_dir> — директория, в которой будет производиться установка (будет размещен файл дистрибутива evo.platform_<version>_satellite.run).

Установка кластера Kubernetes

Установка кластера Kubernetes состоит из следующих этапов:

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

  1. Откройте файл /etc/sysctl.conf.

  2. Добавьте в файл следующие строки:

    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.local.disable_ipv6 = 1
  3. Сохраните файл.

  4. Примените изменения с помощью следующей команды:

    sysctl -p

Настройка SSH-доступа

Проверьте возможность подключения по SSH-ключу к каждому узлу кластера:

ssh <FQDN_addr>

Здесь:

  • <FQDN_addr> — FQDN-адрес текущего узла.

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

hostname -f

Если подключение по SSH-ключу не настроено, сгенерируйте ключи и добавьте открытый ключ на каждый узел:

ssh-keygen
ssh-copy-id <user>@<FQDN_addr>

Установка утилит

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

sudo dnf install bash-completion vim telnet chrony jq htop tcpdump zip unzip rsync ebtables ethtool conntrack -y

Синхронизация времени с NTP-сервером

Настройте синхронизацию времени с корпоративным NTP-сервером, выполнив следующие команды на каждом узле кластера:

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).

Запуск скрипта установки

Скрипт принимает следующие переменные окружения:

Переменная Описание

ASK_PASS

Запрос пароля для подключения к узлам по SSH.

ANSIBLE_USER

Пользователь для подключения к узлам по SSH.

ANSIBLE_PASSWORD

Пароль для подключения к узлам по SSH.

ASK_BECOME_PASS

Запрос пароля для повышения до sudo.

VERBOSE

Уровень детализации логирования (0-4). По умолчанию установлен минимальный уровень детализации (0).

Пример запуска с переменными окружения:

ANSIBLE_USER=username ANSIBLE_PASSWORD=password ./install.sh

По умолчанию скрипт установки запускается в интерактивном режиме, при котором отдельно запрашиваются FQDN-адреса для каждого узла кластера и путь до директории с данными containerd. Чтобы отключить интерактивность скрипта установки, необходимо сразу передать эти данные при его запуске с помощью следующих переменных окружения:

Переменная Описание

MASTER_NODES

Список FQDN-адресов управляющих узлов через пробел.

WORKER_NODES

Список FQDN-адресов рабочих узлов через пробел.

CONTAINERD_ROOT

Путь к директории с данными containerd (по умолчанию /var/lib/containerd).

Пример запуска в неинтерактивном режиме:

ANSIBLE_USER=username ANSIBLE_PASSWORD=password MASTER_NODES="m01.example.com" WORKER_NODES="w01.example.com w02.example.com" CONTAINERD_ROOT="/var/lib/containerd" ./install.sh

Если пользователь не имеет права записи в корневой каталог, установщик необходимо запускать через sudo:

sudo ANSIBLE_USER=username ANSIBLE_PASSWORD=password MASTER_NODES="m01.example.com" WORKER_NODES="w01.example.com w02.example.com" CONTAINERD_ROOT="/var/lib/containerd" ./install.sh

Проверка работоспособности

После завершения установки проверьте статус узлов кластера:

kubectl get nodes

Если все узлы кластера имеют статус Ready, значит, кластер успешно развернут.