Однажды я поняла, что запускаю слишком много маленьких сервисов на отдельных VPS. Кто-то занимается логами, кто-то авторизацией, у кого-то — своя база. Всё это жило в изоляции, без единой точки управления, и каждый апдейт превращался в ручной квест. В итоге я решила: хватит, пора навести порядок. Так я пришла к K3s и Helm — лёгкой оркестрации на слабых серверах.
Если тебе, как и мне, важно держать всё под контролем, но без перегруза от полного Kubernetes, то этот гайд тебе пригодится.
Почему именно K3s?
Если коротко — это облегчённая версия Kubernetes, разработанная Rancher Labs. K3s идеально подходит для установки на VPS, потому что:
- Он маленький и не грузит систему;
- Можно поднять кластер даже на слабом сервере;
- Работает стабильно, даже если у тебя не сотни подов.
Идеально, когда тебе нужно просто управлять микросервисами и не сойти с ума от YAML-конфигов.
Как всё выглядит у меня
У меня три VPS: два рабочих (в Европе и Казахстане) и один резервный. На каждом крутится агент, а мастер — на основном сервере. Helm использую для установки сервисов: Prometheus, Loki, Cert-Manager, Redis и свой небольшой API на FastAPI.
Теперь всё это раскатывается одной командой — и мне не нужно каждый раз вручную всё настраивать.
Установка K3s на Ubuntu VPS
На основной ноде (мастере):
curl -sfL https://get.k3s.io | sh -
После установки K3s сам поднимет кластер и создаст конфигурационный файл:
sudo cat /etc/rancher/k3s/k3s.yaml
Скачай его к себе и настрой
kubectl
export KUBECONFIG=~/k3s.yaml
На остальных VPS (агентах) запускаем так:
curl -sfL https://get.k3s.io | K3S_URL=https://MASTER_IP:6443 K3S_TOKEN=yourtoken sh -
Токен можно взять отсюда:
sudo cat /var/lib/rancher/k3s/server/node-token
Установка Helm
Установка Helm — максимально простая:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Проверяем:
helm version
Если всё ок — идём дальше.
Простой пример: установка Prometheus через Helm
Добавляем репозиторий:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update
Ставим:
helm install monitoring prometheus-community/prometheus
Voilà! У нас есть мониторинг без боли и ручных деплоев.
Полезные штуки, которые я использую
- Traefik — встроенный в K3s, проксирует мои сервисы с TLS.
- Loki + Grafana — для логов и метрик.
- Cert-Manager — автоматически обновляет сертификаты.
- K9s — CLI-интерфейс для Kubernetes, чтобы не жить в .
kubectl describe pod
Частые грабли
1. Сетевые настройки:
Некоторые VPS-провайдеры блокируют порты или имеют нестандартную NAT-схему. Потеряла кучу времени на отладку, пока не настроила корректно фаервол.
2. Память:
Даже K3s не всесилен. Минимум — 1 ГБ, но лучше 2+. Мониторинг сразу покажет, если что-то перегружает сервер.
3. Версии Helm-чартов:
Обновления бывают «ломающими». Лучше фиксировать версии Helm-чартов в
values.yaml
А это точно лучше Docker Compose?
Для совсем маленьких проектов — нет. Но как только тебе нужно:
- масштабировать;
- обновлять сервисы без остановки;
- подключать разные ноды;
…тогда K3s даёт реальную свободу и порядок. Особенно в связке с Helm.
Когда я только начинала, мне казалось, что Kubernetes — это боль. Но K3s оказался спасением: лёгкий, понятный, и при этом — мощный. В связке с Helm он позволяет настроить деплой и управление сервисами буквально за вечер. Главное — не бояться YAML’ов и немного поиграться на тестовом VPS.
Если ты устал вручную катать обновления на каждый микросервис — попробуй. Это действительно упрощает жизнь.
Делаем год чуть длиннее
365 дней VPS? А как насчёт 395?