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

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

Для начала создаем одну машину, из шаблона Ubuntu 24.04, на основе которой будет построен кластер.
Минимальные системные требования для одной ноды: ВМ с 4+ ядрами, 8-16+ ГБ ОЗУ SSD-накопителем, объемом то 20ГБ.


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

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

Для того, чтобы к апи кластера можно было подключаться из интернета, нужно добавить белый IP адрес Edge gateway в конфиг кубернетеса и обновить сертификат. О том как это сделать написано в этой статье.

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

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

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

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

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

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

Введение в CSE

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

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

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

Развёртывание кластера kubernetes c помощью CLI

Для развёртывания и управления kubernetes в vCloud можно воспользоваться инструментом container...