Серія про Kubernetes Homelab (Частина 1): Як я побудував свій Kubernetes кластер з нуля

Це мій перший пост на Medium, і я не можу дочекатися, щоб поділитися цією подорожжю з вами!

Я завжди захоплювався хмарними та віртуалізаційними технологіями, тому вирішив зануритися в Kubernetes і контейнеризацію. Однак кілька місяців тому я зрозумів, що Kubernetes здається надто абстрактним і теоретичним у онлайн-курсах. Я зрозумів, що найкращий спосіб дійсно зрозуміти його — це створити щось реальне. Так і з'явилася ідея створити Kubernetes homelab — практичний проєкт, щоб перетворити мою цікавість у реальні навички, розбиваючи речі, виправляючи їх і навчаючись на шляху.

pic

У цій серії я поділюся своєю подорожжю зі створення Kubernetes homelab з нуля — інструменти, перемоги, перешкоди та уроки — все на основі особистого досвіду, а не типової теорії.

Всі конфігурації та фрагменти коду, які я використовую в цій серії, можна знайти в моєму репозиторії на GitHub: Kubernetes Homelab.

На першому етапі я вирішив розгорнути кластер на фізичних машинах через обмежені характеристики мого обладнання, але планую розширити своє homelab, додавши ще вузли у вигляді віртуальних машин, щоб дослідити масштабованість і протестувати різні технології та конфігурації.

1. Що я будую? Загальний план

Ось бачення, з якого я почав:

  1. Налаштування кластера K3s: Легкий кластер Kubernetes, де контролюючий вузол — це Beelink Mini PC, а робочі вузли розподілені між іншими пристроями, такими як Raspberry Pi.
  2. Персистентне сховище: Використання Longhorn для розподіленого сховища та бекапів. Інтеграція з NAS для додаткового S3-сумісного сховища за допомогою MinIO.
  3. Мережа та інгрес: Використання MetalLB для функціональності LoadBalancer і Tailscale для безпечного інгресу.
  4. Моніторинг та спостережуваність: Розгортання Prometheus та Grafana для візуалізації здоров’я кластера та продуктивності робочих навантажень.
  5. Автоматизація GitOps: Використання ArgoCD для GitOps робочих процесів, забезпечуючи декларативність усіх конфігурацій і версіонування.
  6. Застосунки: Запуск суїти додатків для homelab, таких як Uptime Kuma, Grafana, Prometheus або Home Assistant для практичних сценаріїв.
  7. Федерація: Експерименти з федеративними кластерами Kubernetes, пов’язаними через Tailscale.

pic

2. Чому Kubernetes Homelab?

Для мене цей проєкт поєднує дві речі, які я люблю:

  1. Навчання через дію: Я завжди вірив, що найкращий спосіб вивчити технологію — це працювати з нею. Homelab дає мені реальне середовище для тестування інструментів, оптимізації робочих процесів і усунення проблем без тиску виробництва. Це можливість вийти за межі теорії та працювати з реальними практичними викликами.
  2. Свобода експериментувати: На відміну від робочих середовищ із обмеженнями, homelab — це простір, який я можу вільно ламати та перебудовувати. Я експериментую з федерацією кластерів через Tailscale, тестую робочі процеси GitOps за допомогою ArgoCD та досліджую Kubernetes на різноманітних апаратних налаштуваннях. Це динамічне середовище, яке постійно еволюціонує, коли я додаю додатки та інструменти, щоб натискати на його межі та зміцнювати впевненість у керуванні передовими технологіями.

3. Моє апаратне налаштування

Ось з чого я почав:

  1. Beelink Mini S12 Pro
  • Intel N100, 16GB RAM, 500GB NVMe SSD.
  • Служить як контролюючий вузол і також є робочим вузлом для кластера.
  1. Raspberry Pi 4
  • 4GB RAM з 120GB SSD.
  • Налаштований як легкий робочий вузол.
  1. Synology NAS
  • Інтегрований через MinIO для S3-сумісного сховища та NFS-шарів, використовується для зберігання бекапів Longhorn.
  1. Мережа
  • Стабільна LAN мережа з MetalLB, який обробляє IP-адреси LoadBalancer, і Tailscale для безпечного з’єднання.

4. Як почати: налаштування кластера K3s

Щоб розпочати, я почав з налаштування кластера K3s — легка версія Kubernetes, ідеальна для homelab.
Ось як я підійшов до цього:

Чому K3s?

K3s — це легка версія Kubernetes, спеціально розроблена для edge-комп’ютингу та середовищ з обмеженими ресурсами. На відміну від стандартної версії Kubernetes, K3s зменшує складність, інтегруючи основні компоненти, що робить його чудовим вибором для homelab, де важливі простота та ефективність. Порівняно з Minikube або kubeadm, K3s виділяється як продукційний та легкий, з мінімальним споживанням ресурсів.

Крок 1: Встановлення K3s на Beelink Mini PC

Я використав Beelink Mini S12 Pro як контролюючий вузол. Встановлення K3s було простим:

curl -sfL https://get.k3s.io | sh -  
sudo systemctl status k3s

Ця команда встановлює K3s і запускає сервіс. Перевірте, що він працює, за допомогою:

kubectl get nodes

Тепер ви повинні побачити ваш Beelink вузол у статусі Ready.

Крок 2: Додавання Raspberry Pi як робочого вузла

Щоб додати робочий вузол, я отримав токен з контролюючого вузла:

sudo cat /var/lib/rancher/k3s/server/node-token

Тепер на Raspberry Pi:

curl -sfL https://get.k3s.io | K3S_URL=https://:6443 K3S_TOKEN= sh -

Це підключило Raspberry Pi до кластера. Перевірте за допомогою:

kubectl get nodes

Тепер ви повинні побачити обидва вузли в списку.

Крок 3: Усунення неполадок

Під час налаштування мого Kubernetes кластера я зіткнувся з помилкою “permission denied” для /etc/rancher/k3s/k3s.yaml. Ось як я вирішив цю проблему.

  1. Скопіюйте kubeconfig файл до вашої домашньої директорії:
mkdir -p ~/.kube sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config  
sudo chown $(id -u):$(id -g) ~/.kube/config chmod 600 ~/.kube/config
  1. Встановіть змінну середовища KUBECONFIG:
export KUBECONFIG=~/.kube/config

5. Що далі?

У наступному пості я зосереджуся на персистентному сховищі, яке є критично важливим аспектом будь-якої конфігурації Kubernetes. Я розгляну:

  • Використання Longhorn для розподіленого сховища та бекапів, щоб підвищити стійкість і змоделювати реальні виробничі середовища.
  • Інтеграцію з NAS за допомогою MinIO для S3-сумісного сховища, що дасть більше гнучкості для бекапів та обміну даними між вузлами.

Ці інструменти зміцнять ваш homelab і дадуть практичні знання про реальні стратегії зберігання даних.

6. Будуємо разом

Цей homelab — це подорож, а не просто проєкт. Я буду документувати кожен крок — перемоги, перешкоди та уроки.

Якщо ви будуєте свій власний homelab, я буду радий почути від вас. Діліться своїми думками, ідеями та запитаннями в коментарях. Давайте вчитися та будувати разом.

Залишайтеся на зв'язку для наступного поста. Побачимося в кластері! 🚀

Перекладено з: Kubernetes Homelab Series (Part 1): How I Built My Kubernetes Cluster from Scratch

Leave a Reply

Your email address will not be published. Required fields are marked *