Kubespray - является набором Ansible скриптов, для установки Kubernetes.
Кластер будет состоять из 3-х Master node, 2-х Worker node.
Установку кластера будем производить с Master-1, поэтому на него установим компоненты для ansible. Пользователь на всех машинах - admin с правами sudo.
Требования по ресурсам:
Master:
- CPU: 2
- RAM: 4 Gb
- SSD: 50 Gb
- OS: Ubuntu 22.04
Worker:
- CPU: 4
- RAM: 8 Gb
- SSD: 100 Gb
- OS: Ubuntu 22.04
IP-addresses:
Master-1: 192.168.10.201
Master-2: 192.168.10.202
Master-3: 192.168.10.203
Node-1: 192.168.10.205
Node-2: 192.168.10.206
Локальный пользователь, под которым выполняются команды: admin
Шаг 1. Подготовка виртуальных серверов
Предполагается установка ОС Ubuntu 22.04 на один хост, с дальнейшим клонированием хостов
Сервер: master-1
Создаем машину, с именем master-1. Первым делом отключаем подкачку:
| |
Удаляем строку из /etc/fstab
| |
Отключаем DHCP. Открываем на редактирование:
| |
Прописываем статику для master-1:
| |
Сохраняем, закрываем, применяем:
| |
Установим авторизацию для пользователя admin (мой локальный пользователь с sudo привилегиями) без пароля, для этого. В директории /etc/sudoers.d/ создаём файл admin:
| |
Сервер: master-2
- Клонируем master-1
- Меняем имя хоста на master-2 и IP в netplan
| |
Не забудьте изменить имя сервера в файле /etc/hosts
Убираем DHCP. Открываем на редактирование:
| |
Прописываем статику для master-2:
| |
Сохраняем, закрываем, применяем:
| |
Сервер: master-3
- Клонируем master-3
- Меняем имя хоста на master-3 и IP в netplan
| |
Не забудьте изменить имя сервера в файле /etc/hosts
Убираем DHCP. Открываем на редактирование:
| |
Прописываем статику для master-2:
| |
Сохраняем, закрываем, применяем:
| |
Сервер: node-1
- Клонируем master-1
- Меняем имя хоста на node-1 и IP в netplan
| |
Не забудьте изменить имя сервера в файле /etc/hosts
Убираем DHCP. Открываем на редактирование:
| |
Прописываем статику для node-1:
| |
Сохраняем, закрываем, применяем:
| |
Сервер: node-2
- Клонируем master-1
- Меняем имя хоста на node-2 и IP в netplan
| |
Не забудьте изменить имя сервера в файле /etc/hosts
Убираем DHCP. Открываем на редактирование:
| |
Прописываем статику для node-2:
| |
Сохраняем, закрываем, применяем:
| |
Шаг 2. Настраиваем подключение к хостам для Kubespray
На master-1 создаём SSH-ключ для подключения к другим машинам:
| |
И копируем его на все сервера:
| |
Устаналиваем компоненты Python:
| |
Устанавливаем компонент, для использования ssh паролей:
| |
Так как вначале мы обусловились, что установка кластера будет происходить с ноды master-1, то переходим в директорию opt и выполняем клонирование репозитория:
| |
Устанавливаем зависимости из файла:
| |
Делаем копию директории:
| |
И меняем разрешения, чтобы избежать ощибок доступов при установке:
| |
Удаляем все из файла /k8s_cluster/inventory.ini:
Открываем на редактирование:
| |
Опишем список наших машин в файле inventory:
| |
Чтобы в дальнейшем использовать Helm-charts заранее отметим этот компонент на установку для всего кластера в файле /k8s_cluster/group_vars/k8s_cluster/addons.yaml:
| |
Открываем на редактирование:
| |
Устанавливаем значение true:
| |
В файле group_vars/k8s_cluster/k8s-cluster.yml указываем:
| |
В файле group_vars/k8s_cluster/addons.yml включаем ingress:
| |
Чтобы постоянно не указывать от какого пользователя мы хотим запускать команды ansible можно указать в файле ansible.cfg:
| |
Вставляем в блоке [ssh_connection]:
| |
Доустановлю ansible на master-1:
| |
Шаг 3. Запуск развертывания
После всех настроек выше мы запускаем наш кластер:
| |
Если ошибки по подключению к master-1, то добавляем запрос ssh паролей “-kK” в конец команды:
| |
Установка занимает в среднем от 30 до 60 минут
После установки команды будут работать только от пользователя root. Сделаем это для текущего пользователя (admin):
| |
Проверяем состояние всех нод:
| |
Затем проверяем запуск всех системных подов:
| |
Статус нод должен быть: Ready, если возникают ошибки смотрите логи.
Развертывание кластера завершено.
Дополнения
Чтобы добавить новую ноду, без изменений для уже существующих внесите её в файл inventory/k8s_cluster/inventory.ini и запустите с параметром –limit:
| |
Чтобы удалить ноду:
| |
Чтобы удалить весь кластер:
| |
