Ручное развертывание кластера K8S при помощи kubespray

Эта инструкция поможет вам развернуть минимальный кластер Kubernetes (1 мастер-нода, 2 воркер-ноды) с использованием Kubespray. Подходит для начинающих администраторов, знакомых с основами Linux и Ansible.

Для начала создаем одну машину, из шаблона Ubuntu 24.04, на основе которой будет построен кластер.


Выключаем на ВМ своп с помощью команды:

swapoff -a

для того, чтобы swap был выключен после перезагрузки виртуальной машины, внесем изменения в конфиг /etc/fstab, закоментируем строку с swap:

nano /etc/fstab

включаем форвардинг с помощью команды:

grep "net.ipv4.ip_forward" /etc/sysctl.conf || echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

После изменения /etc/sysctl.conf нужно применить настройки командой

sysctl -p

Теперь генерируем SSH ключи без пароля, для работы ansible

ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa

Публичный ключ вставляем в authorized_keys

cat .ssh/id_rsa.pub >> .ssh/ authorized_keys

Теперь эту машину нужно настроить исходя из требуемых характеристик (hdd/ssd, ram, cpu), и потом расклонировать на нужное количество мастер и воркер нод,

через интерфейс VCloud Director.

После этого на управляющую машине клонируем kubespray.

git clone https://github.com/kubernetes-sigs/kubespray.git

Устанавливаем venv и pip на машине.

apt update && apt install python3-pip python3-venv -y

переходим в директорию склонированного репозитория и создаем виртуальное окружение для python

cd kubespray
git checkout tags/v2.26.0
python3 -m venv .venv

активируем его

source .venv/bin/activate

устанавливаем зависимости из директории kubespray.


python3 -m pip install -r requirements.txt

pip install ruamel.yaml 

Теперь скопируем шаблон инвентори для настройки плэйбука

cp -rfp inventory/sample inventory/k8s

Для того, чтобы указать ансибл на каких ВМ мы будем разворачивать кластер, создадим переменную окружения, в которой укажем  IP адреса наших нод:

declare -a IPS=(172.19.0.10 172.19.0.20 172.19.0.30)

Теперь запускаем создание конфигурационного файла:

CONFIG_FILE=inventory/k8s/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

Откроем получившийся конфиг для редактирования и изменим согласно нашим требованиям:

nano inventory/k8s/hosts.yaml

В пункте kube_control_plane.hosts: перечислены мастер ноды, в пункте kube_node.hosts: перечислены воркер ноды

Сохраняем конфигурацию ctrl-o ctrl-x

 

Включим в кластере поддержку helm чартов, для этого отредактируем файл inventory/k8s/group_vars/k8s_cluster/addons.yml:

nano inventory/k8s/group_vars/k8s_cluster/addons.yml

Изменим значение директивы helm_enabled: на true

Добавим в ansible.cfg пользователя, с которого ансибл будет подключаться:

nano ansible.cfg

 

Подготовка закончена, запускаем плейбук:

ansible-playbook -i inventory/k8s/hosts.yaml cluster.yml

и ждем когда всё развернется. В среднем это может занять до 40 минут.

Если playbook завершится с ошибкой, проверьте логи в терминале. Убедитесь, что SSH-доступ работает, а файлы конфигурации (hosts.yaml, ansible.cfg) корректны. Для подробного вывода используйте:

ansible-playbook -i inventory/k8s/hosts.yaml cluster.yml -vvv

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

kubectl get nodes

 

  • k8s, kubernetes, kubespray
  • 1 کاربر این را مفید یافتند
آیا این پاسخ به شما کمک کرد؟

مقالات مربوطه

Управление нодой NFS и создание PV

Основные преимущества использования NFS в Kubernetes   Использовать существующее хранилище, вы...

Управление кластером kubernetes

Обзор На этой странице представлены основные команды, которые позволяют пользователям создавать,...

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

Данная инструкция описывает как настроить баллансировщик для Kubernetes Cluster созданного c...

Введение в CSE

Описание Container Service Extension (CSE) - это расширение VMware Cloud Director (VCD), которое...

Создание кластера Kubernetes через vCloud Director

Для создания кластера нужно войти в личный tenant с пользователем который обладает правами...