Kubespray - является набором Ansible скриптов, для установки Kubernetes.
Кластер будет состоять из 2-х 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
-
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:
|
|
Сохраняем, закрываем, применяем:
|
|
Сервер: 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:
|
|
В файле group_vars/k8s_cluster/k8s-cluster.yml указываем:
|
|
В файле group_vars/k8s_cluster/addons.yml включаем ingress:
|
|
Чтобы постоянно не указывать от какого пользователя мы хотим запускать команды ansible можно указать в файле ansible.cfg:
|
|
Шаг 3. Запуск развертывания
После всех настроек выше мы запускаем наш кластер:
|
|
Установка занимает в среднем от 30 до 60 минут
После выполнения всех шагов проверяем состояние нод:
|
|
Затем проверяем запуск всех системных подов:
|
|
Статус нод должен быть: Ready, если возникают ошибки смотрите логи.
Развертывание кластера завершено.
Дополнения
Чтобы добавить новую ноду, без изменений для уже существующих внесите её в файл inventory/k8s_cluster/inventory.ini и запустите с параметром –limit:
|
|
Чтобы удалить ноду:
|
|
Чтобы удалить весь кластер:
|
|