Установка кластера Kubernetes с помощью Kubespray
|
Это руководство описывает процесс офлайн-установки кластера Kubernetes с использованием автономного установщика на базе Kubespray. Офлайн-установка Kubernetes для основного экземпляра системы поддерживается для следующих операционных систем:
Для сателлитов поддерживается офлайн-установка кластера K0s на любых операционных системах семейства Linux. Для установки в окружении других ОС с использованием подключения к Интернету обратитесь к разделу Установка кластера Kubernetes вручную. |
Установку кластера можно производить как на master-узле кластера, так и на АРМ администратора — отдельном узле, имеющем сетевой доступ к узлам кластера.
Подготовка файлов установщика
Подготовка файлов установщика состоит из следующих этапов:
Скачивание архива установщика
Для установки необходимо скачать архив установщика Kubernetes из файлового хранилища R-Vision:
-
для РЕД ОС —
kubespray-installer-redos.tar.gz; -
для Debian —
kubespray-installer-debian.tar.gz; -
для Rocky Linux —
kubespray-installer-rocky.tar.gz; -
для установки K0s на сателлите —
k0s-installer.run.
|
Если у вас есть скачанный установщик системы, архивы можно загрузить из его меню. Для этого:
|
Архив с установочным файлом необходимо загрузить во временную директорию /tmp.
Распаковка архива
Выполните следующие шаги:
-
Загрузите архив установщика Kubernetes на узел, на котором будет производиться установка.
-
Для Windows:
pscp <archive_path> user@server:<installation_dir> -
Для Linux или macOS:
scp <archive_path> user@server:<installation_dir>
Здесь:
-
<archive_path>— путь к архиву установщика Kubernetes. -
<installation_dir>— директория, в которой будет производиться установка (будет размещен файл дистрибутиваevo.platform_<version>.run).
Все дальнейшие действия выполняются на узле, на котором будет производиться установка. -
-
Если вы используете архив
kubespray-installer-redos.tar.gz,kubespray-installer-debian.tar.gzилиkubespray-installer-rocky.tar.gz, распакуйте архив с установочными файлами с помощью следующих команд:cd <installation_dir> tar xvfz <archive_name>Здесь:
-
<installation_dir>— директория, в которой будет производиться установка (будет размещен файл дистрибутиваevo.platform_<version>.run). -
<archive_name>— имя архива, например,kubespray-installer-redos.tar.gz.
-
Установка кластера Kubernetes
Установка кластера Kubernetes состоит из следующих этапов:
Отключение использования IPv6
Чтобы избежать ошибок разрешения имен, перед развертыванием кластера отключите использование IPv6, выполнив следующие действия на каждом узле кластера:
-
В каталоге
/etc/sysctl.dсоздайте файл99-disable-ipv6.confсо следующим содержимым:net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 -
Сохраните файл.
-
Примените изменения с помощью следующей команды:
sudo sysctl --system
Настройка доменных имен узлов кластера
В процессе установки Kubespray автоматически изменяет доменную зону worker-узлов (часть доменного имени без имени хоста) на доменную зону первого master-узла в файле инвентаризации. Если имя хоста worker-узла совпадает с таковым у master-узла, после изменения доменной зоны полные доменные имена (FQDN) master- и worker-узла совпадут и установка завершится некорректно.
|
Пример:
В процессе установки FQDN worker-узла изменится на |
Для корректной установки узлам требуется присвоить FQDN, имеющие единую доменную зону, но различные имена хостов. В примере выше:
-
FQDN master-узла —
master.siem.local; -
FQDN worker-узла —
worker.siem.local.
Чтобы проверить и при необходимости изменить доменные имена узлов кластера, выполните следующие действия для каждого из них:
-
Получите доменное имя узла кластера, выполнив следующую команду:
hostname -f -
Если имя хоста worker-узла совпадает с именем хоста master-узла, измените FQDN worker-узла, измените FQDN:
-
Если на узле установлена утилита
hostnamectl:-
Измените FQDN с помощью
hostnamectl:sudo hostnamectl set-hostname <new_fqdn>Здесь:
-
<new_fqdn>— новое FQDN узла.
-
-
Перезапустите узел.
-
-
Если на узле не установлена утилита
hostnamectl:-
Измените FQDN с помощью
hostname:sudo hostname <new_fqdn>Здесь:
-
<new_fqdn>— новое FQDN узла.
Данная команда изменит FQDN узла только до перезагрузки, поэтому также необходимо выполнить последующие шаги. -
-
Измените FQDN в файле
/etc/hostname:sudo nano /etc/hostname -
Измените FQDN в файле
/etc/hosts:sudo nano /etc/hosts
-
-
Настройка SSH-доступа
Проверьте возможность подключения по SSH-ключу к каждому узлу кластера:
ssh <FQDN>
Здесь:
-
<FQDN>— FQDN текущего узла.
|
Чтобы узнать FQDN текущего узла, выполните следующую команду:
|
|
Убедитесь, что FQDN узла разрешается в IP-адрес. Это можно проверить, например, с помощью утилиты nslookup:
Здесь:
Установка Kubernetes на узлы с адресами localhost.localdomain, localhost и 127.0.0.1 не предусмотрена. |
Если подключение по SSH-ключу не настроено, сгенерируйте ключи и добавьте открытый ключ на каждый узел:
ssh-keygen
ssh-copy-id <user>@<FQDN>
Установка утилит
На каждом узле установите утилиты, требуемые для подключения к кластеру:
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).
Запуск скрипта установки
Скрипт принимает следующие переменные окружения:
| Переменная | Описание |
|---|---|
|
Запрос пароля для подключения к узлам по SSH. |
|
Пользователь для подключения к узлам по SSH. |
|
Пароль для подключения к узлам по SSH. |
|
Запрос пароля для повышения до sudo. |
|
Уровень детализации логирования (0-4). По умолчанию установлен минимальный уровень детализации (0). |
Пример запуска с переменными окружения:
ANSIBLE_USER=username ANSIBLE_PASSWORD=password ./install.sh
По умолчанию скрипт установки запускается в интерактивном режиме, при котором отдельно запрашиваются FQDN для каждого узла кластера и путь до директории с данными containerd. Чтобы отключить интерактивность скрипта установки, необходимо сразу передать эти данные при его запуске с помощью следующих переменных окружения:
| Переменная | Описание |
|---|---|
|
Список FQDN master-узлов через пробел. |
|
Список FQDN worker-узлов через пробел. |
|
Путь к директории с данными 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, значит, кластер успешно развернут.
Была ли полезна эта страница?
