Це мій перший пост на Medium, і я не можу дочекатися, щоб поділитися цією подорожжю з вами!
Я завжди захоплювався хмарними та віртуалізаційними технологіями, тому вирішив зануритися в Kubernetes і контейнеризацію. Однак кілька місяців тому я зрозумів, що Kubernetes здається надто абстрактним і теоретичним у онлайн-курсах. Я зрозумів, що найкращий спосіб дійсно зрозуміти його — це створити щось реальне. Так і з'явилася ідея створити Kubernetes homelab — практичний проєкт, щоб перетворити мою цікавість у реальні навички, розбиваючи речі, виправляючи їх і навчаючись на шляху.
У цій серії я поділюся своєю подорожжю зі створення Kubernetes homelab з нуля — інструменти, перемоги, перешкоди та уроки — все на основі особистого досвіду, а не типової теорії.
Всі конфігурації та фрагменти коду, які я використовую в цій серії, можна знайти в моєму репозиторії на GitHub: Kubernetes Homelab.
На першому етапі я вирішив розгорнути кластер на фізичних машинах через обмежені характеристики мого обладнання, але планую розширити своє homelab, додавши ще вузли у вигляді віртуальних машин, щоб дослідити масштабованість і протестувати різні технології та конфігурації.
1. Що я будую? Загальний план
Ось бачення, з якого я почав:
- Налаштування кластера K3s: Легкий кластер Kubernetes, де контролюючий вузол — це Beelink Mini PC, а робочі вузли розподілені між іншими пристроями, такими як Raspberry Pi.
- Персистентне сховище: Використання Longhorn для розподіленого сховища та бекапів. Інтеграція з NAS для додаткового S3-сумісного сховища за допомогою MinIO.
- Мережа та інгрес: Використання MetalLB для функціональності LoadBalancer і Tailscale для безпечного інгресу.
- Моніторинг та спостережуваність: Розгортання Prometheus та Grafana для візуалізації здоров’я кластера та продуктивності робочих навантажень.
- Автоматизація GitOps: Використання ArgoCD для GitOps робочих процесів, забезпечуючи декларативність усіх конфігурацій і версіонування.
- Застосунки: Запуск суїти додатків для homelab, таких як Uptime Kuma, Grafana, Prometheus або Home Assistant для практичних сценаріїв.
- Федерація: Експерименти з федеративними кластерами Kubernetes, пов’язаними через Tailscale.
2. Чому Kubernetes Homelab?
Для мене цей проєкт поєднує дві речі, які я люблю:
- Навчання через дію: Я завжди вірив, що найкращий спосіб вивчити технологію — це працювати з нею. Homelab дає мені реальне середовище для тестування інструментів, оптимізації робочих процесів і усунення проблем без тиску виробництва. Це можливість вийти за межі теорії та працювати з реальними практичними викликами.
- Свобода експериментувати: На відміну від робочих середовищ із обмеженнями, homelab — це простір, який я можу вільно ламати та перебудовувати. Я експериментую з федерацією кластерів через Tailscale, тестую робочі процеси GitOps за допомогою ArgoCD та досліджую Kubernetes на різноманітних апаратних налаштуваннях. Це динамічне середовище, яке постійно еволюціонує, коли я додаю додатки та інструменти, щоб натискати на його межі та зміцнювати впевненість у керуванні передовими технологіями.
3. Моє апаратне налаштування
Ось з чого я почав:
- Beelink Mini S12 Pro
- Intel N100, 16GB RAM, 500GB NVMe SSD.
- Служить як контролюючий вузол і також є робочим вузлом для кластера.
- Raspberry Pi 4
- 4GB RAM з 120GB SSD.
- Налаштований як легкий робочий вузол.
- Synology NAS
- Інтегрований через MinIO для S3-сумісного сховища та NFS-шарів, використовується для зберігання бекапів Longhorn.
- Мережа
- Стабільна 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
. Ось як я вирішив цю проблему.
- Скопіюйте 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
- Встановіть змінну середовища
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