k3s на VPS: легковесный Kubernetes за 10 минут — иллюстрация к статье Storm Cloud Blog, категория Облака
k3s на VPS: легковесный Kubernetes за 10 минут — иллюстрация к статье Storm Cloud Blog, категория Облака
Облака·2 мин··

k3s на VPS: легковесный Kubernetes за 10 минут

Установка k3s на VPS: поды, сервисы, Ingress, Helm. Production-ready Kubernetes без тяжёлого K8s для 1–3 серверов.

Краткий ответ: k3s — облегчённый Kubernetes от Rancher. Одна команда на VPS — рабочий кластер. Для 1–3 серверов k3s практичнее полного K8s и проще Minikube.

Когда Docker Compose не хватает для оркестрации, а полный Kubernetes пугает — k3s золотая середина.


k3s vs Minikube vs Docker Swarm

k3s Minikube Swarm
Production Да Нет (dev) Да
RAM минимум 1 GB 2 GB 1 GB
Multi-node Да Сложно Да
Экосистема K8s Полная Полная Docker-only

Установка single-node

curl -sfL https://get.k3s.io | sh -
sudo kubectl get nodes

Kubeconfig:

sudo cat /etc/rancher/k3s/k3s.yaml

Подготовка VPS — Ubuntu настройка.


Деплой приложения

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
spec:
  replicas: 2
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
        - name: api
          image: myapi:latest
          ports:
            - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: api
spec:
  selector:
    app: api
  ports:
    - port: 80
      targetPort: 8080
kubectl apply -f api.yaml

Ingress (Traefik встроен в k3s)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt
spec:
  tls:
    - hosts: [api.example.com]
      secretName: api-tls
  rules:
    - host: api.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: api
                port:
                  number: 80

Альтернатива — Traefik standalone.


Multi-node кластер

На втором VPS:

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

Связь между нодами — приватная сеть или WireGuard.


Helm

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis

RAM

Кластер RAM
1 node, 2–3 пода 2 GB
1 node, 10+ подов 4 GB
3 nodes 2 GB per node

Мониторинг — Grafana + kube-prometheus-stack.


k3s vs managed Kubernetes

Self-hosted k3s на StormNet Cloud дешевле managed при 1–3 серверах. Managed — когда нужен SLA и control plane без забот.


Итог

k3s — вход в Kubernetes без боли. Один VPS для старта, масштаб на worker-ноды по мере роста.

VPS от 2 GB — StormNet Cloud. IaC — Terraform. Swarm проще — Docker Swarm.

Частые вопросы

k3s или полный Kubernetes на VPS?

k3s — для 1–5 VPS, меньше RAM и проще установка. Полный K8s — для больших кластеров и enterprise.

Можно ли запустить k3s на VPS с 2 ГБ RAM?

Да, для 2–3 лёгких подов. Для production с мониторингом и несколькими сервисами — от 4 ГБ.