mysurik.ru

Kubernetes на домашнем сервере: есть ли смысл

Признаюсь честно: я поддался хайпу. Год назад сидел я, смотрел на свой Proxmox с десятком LXC-контейнеров и думал — всё несерьёзно. Настоящие админы используют Kubernetes. У меня же — просто Docker на одной VM, пара компоузов, и всё это какое-то… игрушечное.

Ну и понеслось.

Я развернул K3s на трёх VPS в DigitalOcean. Потом ещё один кластер — на Raspberry Pi. Потом ещё — на старом ноутбуке. Три кластера, Карл! Потому что «надо уметь», «это стандарт индустрии», «без K8s ты не сисадмин».

Спойлер: я их все снёс через месяц. А дома оставил… обычный Docker.

Но давай по порядку.

Я начал с того, что установил K3s на два узла — мастер и воркер. Мастер на VM с 2GB RAM, воркер на отдельной VM с 4GB. По документации — легковесный Kubernetes, оптимизированный для edge, IoT, всего такого. Установка — одна команда:

curl -sfL https://get.k3s.io | sh —

Вжух — и у тебя кластер. Прям магия. Я чувствовал себя богом автоматизации. Серьёзно, первые полчаса я просто смотрел на `kubectl get nodes` и улыбался как идиот.

А потом началось.

Во-первых, память. K3s жрёт около 500MB на мастере и 300MB на воркере. Это в простое. На голой VM без полезной нагрузки. Для сравнения — Docker Compose на той же VM жрёт… практически ничего, потому что контейнеры запускаются только когда нужны. Тут же у тебя постоянно висит kubelet, containerd, kube-proxy, coredns, traefik — и это только системные поды.

Я запустил свой первый полезный под — Nextcloud. Хотел посмотреть, как оно в оркестрации. Развернул через Helm-чарт. Получил 8 подов вместо одного контейнера. База отдельно, редис отдельно, cronjob отдельно, веб-отдельно… Каждый под жрёт по 100-200MB. Nextcloud, который в Docker Compose укладывался в 1GB памяти, в K8s занял 3GB.

Тут я впервые задумался: а оно мне надо?

Дальше — обслуживание. Обновлять кластер — это ритуал с бубном. K3s обновляется легко, но если у тебя helm-релизы, PV-шные тома, ingress-контроллеры… Наступает момент, когда ты перестаёшь что-то обновлять, потому что «работает же». А потом «работает же» ломается, и ты вспоминаешь, что полгода назад ставил cert-manager, но уже забыл как.

У меня сломался Traefik после обновления K3s. Не стартовал — и всё. Я потратил вечер на дебаг (проблема была в CRD-версиях), починил, но осадочек остался.

А знаешь, что меня добило? Хранение данных. В Kubernetes StatefulSet-ы с PersistentVolumeClaim — это боль. У тебя всё хорошо, пока ты не решишь перенести под на другой узел. Или пока у тебя не сломается диск. Я использовал Longhorn для распределённого хранилища — ещё один слой сложности. И ещё 500MB памяти сверху.

Longhorn реплицирует данные между узлами. Круто, да? Только вот на домашнем сервере у меня нет 10Gbps-сети. Репликация жрёт CPU и диски, и в итоге твоя MariaDB тормозит так, что phpMyAdmin грузится 10 секунд.

Так для чего вообще K8s? Горизонтальное масштабирование. Если у тебя 10 миллионов пользователей — да, без него никуда. Если у тебя сайт, который читают 100 человек в день — не надо.

Да, я знаю, что кто-то скажет про reproducible deployments, про GitOps, про то, что всё описывается в YAML и воспроизводится на любом кластере. Аргумент рабочий. Но знаешь что ещё отлично воспроизводится? Docker Compose. Один файл. Пять минут. И ты уже развернул всё приложение.

Я не говорю, что Kubernetes — зло. Это потрясающая технология. Для дата-центров, для продакшна с сотнями микросервисов, для команд из 20+ человек. Но для домашнего сервера, где ты один, у тебя 4-8GB RAM и один IP — это оверкиллум.

Сейчас я держу K3s только на одном VPS, где крутятся тестовые проекты, которые удобно деплоить через ArgoCD. Просто чтобы навык не терять. А дома — Proxmox LXC с Docker, где каждый сервис живёт в своём Compose-файле. Всё просто, всё предсказуемо, и если что-то сломалось — я чининю это за 5 минут, а не за вечер.

Хочешь попробовать K8s ради обучения — попробуй. Разверни K3s на VPS с 4GB, поиграйся с Helm, с Ingress, с ConfigMap. Это полезный опыт. Но не ставь его дома, если у тебя нет отдельного сервера с 16GB RAM и запасом терпения. Серьёзно, не надо.

Я свой кластер снёс и не жалею.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *