Ручное развертывание кластера 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 Users Found This Useful
Was this answer helpful?

Related Articles

NFS node management and PV creation

  Advantages of using NFS in Kubernetes   Using existing storage. You can mount an existing...

Managing a Kubernetes cluster

Overview Learn the basic commands that allow users to create, manage, and delete Kubernetes...

Adding a network load balancer

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

Introduction to CSE

The Container Service Extension (CSE) is an extension to VMware Cloud Director (VCD) that helps...

How to create a Kubernetes cluster via vCloud Director

To create the cluster, you need to log in to a personal tenant with an administrator user at...