// технологии

Как установить и настроить Kubernetes (K3s) на VPS Linux: полное руководство по оркестрации контейнеров

September 06, 2026 · by Alex M.

Как установить и настроить Kubernetes (K3s) на VPS Linux: полное руководство по оркестрации контейнеров

Оркестрация контейнеров стала обязательным навыком для любого современного системного администратора. Kubernetes — это отраслевой стандарт, однако его классическая установка может быть перегруженной для одного VPS. Именно здесь на помощь приходит K3s — лёгкий дистрибутив Kubernetes, сертифицированный CNCF, идеально подходящий для продакшн-сред с ограниченными ресурсами.

В этом руководстве вы узнаете, как установить и настроить K3s на VPS NVMe или VPS SSD, с нуля до первого рабочего деплоя.


Что такое K3s и почему стоит его выбрать?

K3s разработан Rancher Labs и упаковывает весь Kubernetes в один бинарный файл размером ~70 МБ. Он убирает редко используемые компоненты и заменяет etcd на SQLite (по умолчанию) или PostgreSQL/MySQL для больших кластеров.

Преимущества K3s перед классическим Kubernetes:

  • Потребление оперативной памяти на ~50% меньше
  • Полная установка менее чем за 2 минуты
  • Единый бинарный файл — никаких сложных внешних зависимостей
  • Поддержка ARM и x86_64
  • Идеально для CI/CD, edge computing и dev/staging окружений

Если вам нужен более надёжный продакшн-кластер, рассмотрите управляемый выделенный сервер для гарантированных ресурсов и включённой технической поддержки.


Предварительные требования

Перед началом убедитесь, что у вас есть:

  • VPS с Ubuntu 22.04 LTS или Debian 12 (рекомендуется)
  • Минимум 2 vCPU и 2 ГБ RAM (4 ГБ рекомендуется для реальных нагрузок)
  • Доступ root или пользователь с привилегиями sudo
  • Активное SSH-соединение
  • Открытые порты 6443 (API server) и 10250 в файрволе

Шаг 1: Обновление системы и подготовка

Подключитесь к VPS и обновите пакеты:

sudo apt update && sudo apt upgrade -y

Установите необходимые утилиты:

sudo apt install -y curl wget git ufw

Активируйте UFW и настройте базовые правила:

sudo ufw allow ssh
sudo ufw allow 6443/tcp    # K3s API server
sudo ufw allow 10250/tcp   # Kubelet metrics
sudo ufw allow 80/tcp      # HTTP
sudo ufw allow 443/tcp     # HTTPS
sudo ufw enable

Примечание: Если вы используете несколько узлов в кластере, добавьте также порт 8472/udp для Flannel VXLAN.


Шаг 2: Установка K3s (серверный/мастер-узел)

Установка K3s выполняется одной командой curl:

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

Официальный скрипт загружает бинарный файл, создаёт systemd-сервис и автоматически запускает K3s. Проверьте статус:

sudo systemctl status k3s

Вы должны увидеть active (running). Проверьте также Kubernetes-узел:

sudo kubectl get nodes

Ожидаемый вывод:

NAME        STATUS   ROLES                  AGE   VERSION
vps-demo    Ready    control-plane,master   2m    v1.29.4+k3s1

Шаг 3: Настройка kubectl и kubeconfig

По умолчанию файл kubeconfig находится по пути /etc/rancher/k3s/k3s.yaml. Скопируйте его в домашний каталог, чтобы запускать kubectl без sudo:

mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
export KUBECONFIG=~/.kube/config

Добавьте экспорт в ~/.bashrc для постоянного эффекта:

echo 'export KUBECONFIG=~/.kube/config' >> ~/.bashrc
source ~/.bashrc

Проверьте:

kubectl cluster-info

Шаг 4: Добавление рабочего узла (опционально)

Если у вас есть два VPS (например, VPS NVMe для мастера и VPS SSD для воркера), вы можете расширить кластер.

На мастер-узле получите токен для подключения:

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

На рабочем узле выполните:

curl -sfL https://get.k3s.io | K3S_URL=https://<IP_MASTER>:6443 K3S_TOKEN=<TOKEN> sh -

Проверьте на мастере, что новый узел появился:

kubectl get nodes

Шаг 5: Деплой первого приложения

Давайте задеплоим простое приложение Nginx для проверки кластера.

Создание Deployment

kubectl create deployment nginx-demo --image=nginx:stable --replicas=2

Экспозиция как Service

kubectl expose deployment nginx-demo --port=80 --type=NodePort

Проверка состояния

kubectl get pods
kubectl get services

Пример вывода:

NAME                          READY   STATUS    RESTARTS   AGE
nginx-demo-7d6f8b9c5-4xkpz   1/1     Running   0          30s
nginx-demo-7d6f8b9c5-9qlmn   1/1     Running   0          30s

Узнайте назначенный порт NodePort (например, 32456) и откройте http://<IP_VPS>:32456 в браузере.


Шаг 6: Установка Helm — менеджера пакетов Kubernetes

Helm значительно упрощает установку сложных приложений (cert-manager, Ingress и др.):

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

Проверьте:

helm version

Добавьте официальный stable репозиторий:

helm repo add stable https://charts.helm.sh/stable
helm repo update

Шаг 7: Настройка Ingress Controller и TLS

K3s поставляется с предустановленным Traefik в качестве Ingress Controller. Проверьте:

kubectl get pods -n kube-system | grep traefik

Для экспозиции веб-приложения с собственным доменом создайте файл ingress-demo.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
  rules:
  - host: demo.vashдomен.md
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-demo
            port:
              number: 80

Применить:

kubectl apply -f ingress-demo.yaml

Для автоматического TLS через Let's Encrypt установите cert-manager через Helm:

helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --set installCRDs=true

Эта настройка отлично работает в паре с действующим SSL-сертификатом для вашего домена.


Шаг 8: Мониторинг и управление ресурсами

Kubernetes Dashboard

Установите Kubernetes Dashboard:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

Создайте ServiceAccount для доступа:

kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
kubectl create clusterrolebinding dashboard-admin \
  --clusterrole=cluster-admin \
  --serviceaccount=kubernetes-dashboard:dashboard-admin

Получите токен доступа:

kubectl -n kubernetes-dashboard create token dashboard-admin

Полезные команды мониторинга

# Состояние всех подов
kubectl get pods --all-namespaces

# Использование ресурсов (требуется metrics-server)
kubectl top nodes
kubectl top pods

# Логи пода
kubectl logs <имя-пода>

# Детальное описание
kubectl describe pod <имя-пода>

Шаг 9: Настройка персистентного хранения данных

K3s включает Local Path Provisioner по умолчанию — идеально для персистентных томов на одном узле.

Создайте PersistentVolumeClaim:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: demo-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-path
  resources:
    requests:
      storage: 5Gi
kubectl apply -f pvc-demo.yaml
kubectl get pvc

Советы по безопасности K3s в продакшне

Безопасность Kubernetes-кластера не менее важна, чем безопасность самого сервера. Основные меры:

  1. Ограничьте доступ к API server — не открывайте порт 6443 публично без необходимости
  2. Используйте RBAC — принцип минимальных привилегий для сервисов и пользователей
  3. Включите Audit Logging — для отслеживания операций в кластере
  4. Регулярно обновляйте K3scurl -sfL https://get.k3s.io | sh - обновляет автоматически
  5. Изолируйте namespace-ы — разделяйте продакшн и тестовые окружения
  6. Мониторинг с Grafana + Prometheus — для полной видимости инфраструктуры

Если вам нужна помощь в обеспечении безопасности вашей инфраструктуры, услуги по управлению серверами от CLIQHOST готовы взять эту ответственность на себя.


Обновление и удаление K3s

Обновление

K3s можно обновить, повторно запустив скрипт установки:

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

Удаление

Для полного удаления K3s с мастер-узла:

/usr/local/bin/k3s-uninstall.sh

Для рабочих узлов:

/usr/local/bin/k3s-agent-uninstall.sh

Заключение

K3s делает Kubernetes доступным даже на скромной инфраструктуре. Следуя шагам этого руководства, вы установили рабочий кластер, задеплоили первое приложение, настроили Ingress с Traefik и заложили основу безопасного и масштабируемого продакшн-окружения.

Для стабильного кластера K3s рекомендуем VPS NVMe от CLIQHOST — со сверхбыстрым хранилищем, гарантированным аптаймом и поддержкой 24/7. По мере роста проекта вы всегда можете перейти на выделенный сервер или воспользоваться нашими услугами управления серверами.

👉 Есть вопросы или хотите обсудить подходящую конфигурацию для вашего проекта? Свяжитесь с командой CLIQHOST — мы готовы помочь.

SHARE
// Что говорят наши клиенты

Что говорят наши клиенты

Реальные отзывы клиентов, которые доверяют CLIQHOST за производительность, надёжность и профессиональную техническую поддержку.

★★★★★

"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău