Перейти к содержимому

Как развернуть Kubernetes на VPS с k3s

Лёгкий Kubernetes на одном или нескольких серверах AdAstra Cloud с помощью k3s, деплой первого приложения и доступ через kubectl.

Обновлено: 2026-11-07 · 2 мин чтения

Полноценный Kubernetes требует много ресурсов, а k3s — сертифицированный дистрибутив Kubernetes в одном бинарном файле — работает даже на небольших серверах. Для учебного кластера хватит одного сервера M (4 vCPU, 8 ГБ RAM), для продакшена рекомендуем три сервера или VDS.

Установка сервера (control plane)

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

k3s сразу ставит containerd, сетевой плагин Flannel, ingress-контроллер Traefik и локальное хранилище.

Подключение рабочих узлов

На первом сервере получите токен:

cat /var/lib/rancher/k3s/server/node-token

На каждом следующем сервере выполните, подставив IP первого сервера и токен:

curl -sfL https://get.k3s.io | K3S_URL=https://10.0.0.1:6443 K3S_TOKEN=ТОКЕН sh -

Порт 6443 откройте в фаерволе только для адресов ваших узлов.

Управление с ноутбука

Скопируйте конфигурацию на свой компьютер и замените адрес:

scp root@203.0.113.24:/etc/rancher/k3s/k3s.yaml ~/.kube/config
sed -i 's/127.0.0.1/203.0.113.24/' ~/.kube/config
kubectl get nodes

Первое приложение

Файл app.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello
spec:
  replicas: 2
  selector:
    matchLabels: { app: hello }
  template:
    metadata:
      labels: { app: hello }
    spec:
      containers:
        - name: web
          image: nginx:stable
          ports: [{ containerPort: 80 }]
---
apiVersion: v1
kind: Service
metadata:
  name: hello
spec:
  selector: { app: hello }
  ports: [{ port: 80 }]
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hello
spec:
  rules:
    - host: app.example.kz
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service: { name: hello, port: { number: 80 } }
kubectl apply -f app.yaml
kubectl get pods,svc,ingress

Направьте DNS-запись app.example.kz на IP сервера — Traefik начнёт принимать трафик на порту 80.

Что дальше

  • HTTPS: установите cert-manager и выпускайте сертификаты Let's Encrypt автоматически.
  • Хранилище: для данных используйте PersistentVolumeClaim, а для бэкапов — облачное S3-хранилище.
  • Мониторинг: kube-prometheus-stack с Grafana.

Нужен кластер из нескольких VDS с выделенными ядрами? Напишите нам — подберём конфигурацию.