$ sysadstemi.xyz

Миграция домашнего сервера с docker-compose на k3s

2025-07-22 · k3sk8sself-hosted

Зачем мне понадобился k3s дома, как я перевозил compose-стек и что из этого вышло.

Год назад у меня дома крутился один сервер с 12 сервисами в docker-compose. Всё работало, я был счастлив. Потом появилась вторая машина, захотелось HA, и я понял, что «поднять тот же compose на двух нодах и синхронизировать руками» — это путь в никуда.

Почему k3s, а не «настоящий» Kubernetes

Для домашнего кластера на 3 ноды полный k8s — это лишний вес. k3s — это легковесный дистрибутив: один бинарь, SQLite вместо etcd по умолчанию, Traefik из коробки. Для self-hosted — оптимально.

Что было в compose до

PostgreSQL, Redis, Gitea, Nextcloud, MinIO, Jellyfin, Mosquitto, Prometheus+Grafana, Loki, пара ботов. Всё на одной машине, 32 ГБ RAM, 8 ядер.

План

  1. Поднять k3s на master-ноде (бывший сервер).
  2. Добавить две worker-ноды (второй компьютер и старый ноутбук).
  3. Перевести каждый сервис в Deployment + Service + PVC.
  4. Traefik как ingress, cert-manager для TLS.
  5. Longhorn для persistent storage поверх существующих дисков.

С какими проблемами столкнулся

Что в итоге

Кластер работает уже 10 месяцев. Один раз умерла worker-нода — pod'ы переехали на оставшиеся, ничего не отвалилось. Из compose-стиля пришлось переписать конфиги всех 12 сервисов, но теперь катить обновления — это одна команда kubectl rollout restart deploy/..., а не заход по SSH и docker restart.

Стоило ли? Да, но только если у вас уже больше 5 сервисов и/или две+ ноды. Для одного сервера compose всё ещё проще.


К списку заметок · на главную