Акмалов Артур

Kubespray Proxmox Ubuntu

kubespray proxmox

Установка k8s kubespray proxmox ubuntu 20.04

Введение

Планируется в учебно познавательных целях на домашнем сервере поднять кластер Kubernetes, далее пошаговые действия в подробностях. 

Для тех кто не хочет заморачиваться с установкой, но есть желание пощупать Kubernetes рекомендую попробовать minikube

1. Подготовка

1. Машина на Linux — для настройки, установки, управления (Можно железо, виртуалку, LXC) Далее его буду называть — Admin PC, чтоб не было путаницы

2. Кластер (ноды) — у себя буду использовать 4 виртуальные машины (VM) на сервере Proxmox с Ubuntu 20.04 (Так же можно использовать другие гипервизоры или реальное железо). 

Пытался ноды на LXC поднять, такого шаманства не осилил, а на VM нет проблем.

Минимальные требования

    • Memory: 1500 MB
    • CPU: 2 Cores

Для удобства создаю один temlpate VM в Proxmox

  • установка Ubuntu 20.04
  • обновление пакетов
  • копирование SSH ключ (с Admin PC)
  • Shutdown -> Convert to template

Данный template клонирую для 4 VM (Full clone)

  • node 1 — Master
  • node 2
  • node 3
  • node 4

После клонирования все MAC адреса отмечаю в DHCP сервер для выдачи статичных IP адресов и запускаю VM .

На Admin PC, проверяю есть ли доступ по SSH ключу на каждую VM

ssh node1 

2. Подготовка kubespray

Далее все действия происходят на Admin PC

Клонирую репозиторий kubespray и перехожу на последнюю стабильную ветку

git clone https://github.com/kubernetes-sigs/kubespray.git
cd kubespray/
git checkout v2.18.1  

Установка зависимостей

pip3 install -r requirements-2.11.txt  

Копирую папку шаблонов  с inventory и подставляю туда свои значения

cp -rfp inventory/sample inventory/mycluster
nano inventory/mycluster/inventory.ini 

Базу etcd желательно раскатать на 3 ноды, но для экспериментов оставлю только на master node (node1) т.к. в планах использовать БД на отдельных серверах.

2. Конфигурация kubespray

Конфигурационные файлы так же лежат в скопированной директории

~/kubespray/inventory/mycluster/group_vars# 
2.1 k8s cluster/addons.yml

Начну с файла k8s cluster/addons.yml

Включаю (true):

  • Установку helm, это пакетный менеджер и шаблонизатор. 
  • ingress nginx controller
  • cert-manager-enabled (генерация, управление сертификатами приложений)
2.2 k8s_cluster/k8s-cluster.yml

Тут можно изменить

  • kube_version
  • kube-network-plugin: calico (CNI) 
  • kube-pods-subnet: 10.233.64.0/18
  • kube-proxy-mode: ipvs 
  • dns-mode: coredns
  • container_manager: containerd (CRI)

Настройки по умолчанию вполне устраивают, в этом файле ничего не менял.

2.3 all/all.yml

Здесь можно указать external load balancer и его настройки.

Так же оставил все по умолчанию.

 

3. Установка

Перехожу в корневую папку с kubespray и запускаю установку 

ansible-playbook -i inventory/mycluster/inventory.ini  --become --become-user=root cluster.yml 

Установка заняла 10 минут

Подключаюсь к master node смотрю файл конфигурации, проверяю ноды

cat /etc/kubernetes/admin.conf
kubectl get nodes 

Кластер Kubernetes на VM Proxmox с Ubuntu готов. Весь процесс занял примерно 30 минут.

P.S.

Для визуального представления скачал на свой рабочий ПК программу Lens, добавил подключение к кластеру через admin.conf 

все ноды на месте, надо было еще и метрики добавить в конфигурации.

Продолжаю учиться и экспериментировать с k8s.

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии