vpsguru Обновлено 22.07.2026

Kubernetes: что это такое и как развернуть кластер на VPS — инструкция для новичка

Обновлено 29 сентября 2026 Чтение 9 мин Раздел: Блог VPSGuru: сети, серверы и безопасность сайта простыми словами

Kubernetes — система, которая запускает контейнеры на серверах, следит за ними и перезапускает при сбое. В статье вы разберёте, из чего состоит кластер, какие ресурсы нужны и как за 15 минут поднять лёгкий k3s на одном VPS. Это материал из раздела Блог: с командами, портами и проверкой результата.

Kubernetes: что это такое и как развернуть кластер на VPS — инструкция для новичка

Коротко

Главные выводы статьи о теме «Kubernetes» в семи пунктах:

  • Kubernetes появился в 2014 году в Google, с 2015 года развивается под крылом CNCF
  • Минимум для учебного кластера k3s — 1 vCPU и 1 ГБ ОЗУ, комфортно — 2 vCPU и 2–4 ГБ
  • Установка k3s одной командой занимает 1–3 минуты, весь путь до первого приложения — около 15 минут
  • API-сервер слушает порт 6443, kubelet — 10250, NodePort — диапазон 30000–32767
  • Kubernetes поддерживает три последние минорные версии, обновляться нужно минимум раз в год
  • Для одного сайта или одного контейнера Docker Compose проще: кластер оправдан от 3–5 сервисов
  • Пробный кластер на VPS обходится в стоимость одного сервера, ориентир — 500–1 000 ₽/мес

Что такое Kubernetes простыми словами

Kubernetes (сокращённо k8s: между K и s 8 букв) — это оркестратор контейнеров. Он запускает контейнеры на одном или нескольких серверах и следит, чтобы они работали так, как вы описали. Контейнер — это приложение, упакованное вместе со всем нужным для запуска. Собирают и запускают контейнеры обычно через Docker: установите Docker, и первый контейнер заработает за 5 минут.

Docker запускает контейнеры, а Kubernetes управляет ими, когда их десятки. Он появился в 2014 году в Google, а с 2015 года развивается под крылом CNCF (Cloud Native Computing Foundation).

Пример: вместо одного контейнера с сайтом вы просите у кластера 3 копии. Одна упала — Kubernetes запускает новую за секунды, а посетители всё это время получают ответы от двух оставшихся.

  • Самовосстановление: упавший контейнер перезапускается автоматически.
  • Масштабирование: число копий меняется одной командой, например kubectl scale.
  • Обновления без простоя: новая версия заменяет старые копии по одной, сайт не отключается.

Как устроен кластер Kubernetes: узлы, поды и сервисы

Кластер состоит из узлов — серверов, физических или виртуальных. Часть узлов образует control plane (управляющий слой): он принимает команды и решает, что и где запускать. Остальные — worker-узлы (рабочие): на них работают ваши контейнеры. В учебном k3s на одном VPS обе роли выполняет одна машина.

Контейнеры запускаются не по одному, а в подах (Pod) — минимальной единице запуска. Deployment следит, чтобы работало нужное число копий пода, например 3. Service даёт группе подов постоянный адрес, а Ingress направляет HTTP-трафик на нужный Service по домену.

Путь команды от kubectl до контейнера выглядит так:

  1. Вы вводите kubectl apply -f app.yaml, и запрос уходит на порт 6443.
  2. API-сервер проверяет запрос и записывает объект в etcd.
  3. Scheduler (планировщик) выбирает узел для нового пода.
  4. Kubelet на этом узле, слушающий порт 10250, запускает контейнер.
Компонент или объект За что отвечает Где живёт
API-сервер принимает команды kubectl, проверяет их control plane, порт 6443
etcd хранит состояние кластера control plane
scheduler выбирает узел для пода control plane
kubelet запускает и проверяет контейнеры каждый узел, порт 10250
Deployment держит заданное число подов запись в etcd
Service, Ingress дают адрес и маршрутизируют трафик; NodePort — порты 30000–32767 правила на узлах
Схема архитектуры кластера Kubernetes с control plane и двумя worker-узлами
Схема кластера: control plane и рабочие узлы

Как установить Kubernetes на VPS: пошаговая инструкция с k3s

Для учебного кластера подойдёт k3s — облегчённый дистрибутив Kubernetes, который ставится одной командой. Минимум для него — 1 vCPU и 1 ГБ ОЗУ, но комфортно работать на 2 vCPU и 2–4 ГБ. Сервер можно выбрать в рейтинге VPS.

Весь путь займёт около 15 минут. Сама установка k3s — 1–3 минуты, остальное уходит на подготовку сервера и настройку доступа.

  1. Закажите VPS (3–5 минут). Выберите Ubuntu 24.04, 2 vCPU, 2–4 ГБ ОЗУ, диск от 20 ГБ. Запишите IP-адрес и пароль от root.
  2. Подключитесь по SSH (1 минута). Выполните ssh root@IP_сервера, порт 22. Если работаете из Windows, подключитесь через PuTTY.
  3. Обновите систему (2–3 минуты). Выполните apt update && apt upgrade -y.
  4. Откройте порты (1 минута). Разрешите 6443 (API-сервер Kubernetes), 80 и 443 (веб-трафик): ufw allow 6443/tcp, ufw allow 80/tcp, ufw allow 443/tcp. Порт 22 оставьте открытым, иначе потеряете доступ по SSH.
  5. Установите k3s (1–3 минуты). Выполните curl -sfL https://get.k3s.io | sh -. Скрипт сам скачает и запустит сервис.
  6. Проверьте узел (30 секунд). Выполните k3s kubectl get nodes. В колонке STATUS должно стоять Ready.
  7. Настройте удалённый kubectl (2 минуты). Скопируйте /etc/rancher/k3s/k3s.yaml на свой компьютер, замените в нём 127.0.0.1 на IP сервера и укажите файл в переменной KUBECONFIG.
Терминал с выводом команды kubectl get nodes после установки k3s на VPS
Результат установки k3s: узел в статусе Ready (иллюстрация интерфейса)

Какой VPS нужен для Kubernetes и сколько это стоит

Для учебного кластера хватит одного сервера. Сервер k3s (облегчённый дистрибутив Kubernetes) запускается на 1 vCPU (виртуальное ядро процессора) и 1 ГБ ОЗУ, но комфортнее работать на 2 vCPU и 2 ГБ. Для kubeadm (официальный установщик Kubernetes) нужно минимум 2 vCPU и 2 ГБ на каждый узел.

Сама система занимает около 500–700 МБ ОЗУ: сюда входят API-сервер, kubelet и служебные поды. Остальное остаётся вашим приложениям, поэтому на 1 ГБ поместится только пара небольших контейнеров. Диск берите SSD или NVMe от 20 ГБ: на нём лежат образы контейнеров и данные хранилища etcd.

Учебный узел стоит примерно 500–1 000 ₽/мес, боевой кластер из 3 узлов обойдётся втрое дороже. Цены меняются, поэтому сверяйте актуальные тарифы в рейтинге VPS-провайдеров перед заказом.

Сценарий vCPU ОЗУ Диск Узлов
Минимум для k3s 1 1 ГБ 20 ГБ SSD 1
Комфортное обучение на k3s 2 2–4 ГБ 30–40 ГБ NVMe 1
Кластер kubeadm для практики 2 2 ГБ 20 ГБ SSD 2–3
Боевой кластер 2–4 4 ГБ 40 ГБ NVMe 3
Важно. По умолчанию kubelet (агент на каждом узле) не запускается при включённом swap (файле подкачки). Отключите его командой swapoff -a и закомментируйте строку со swap в файле /etc/fstab, иначе после перезагрузки сервера проблема вернётся.

Как запустить первое приложение и проверить кластер

Для проверки возьмите веб-сервер nginx: он лёгкий и сразу показывает страницу в браузере. Подключитесь к серверу по SSH и создайте deployment — объект, который следит, чтобы нужное число копий приложения всегда работало: kubectl create deployment nginx --image=nginx --replicas=2.

Сравнить тарифы VPS по ресурсам

Сравните цены на серверы под учебный и боевой кластер.

Открыть рейтинг VPS

Откройте доступ снаружи командой kubectl expose deployment nginx --type=NodePort --port=80. Kubernetes выдаст порт из диапазона 30000–32767. Узнайте его через kubectl get svc nginx: в столбце PORT(S) будет запись вида 80:31234/TCP. Откройте в браузере http://IP-сервера:31234 — появится страница Welcome to nginx. Если она не грузится, проверьте, что этот порт разрешён в файрволе VPS.

Команда kubectl get pods покажет два пода. Значение Ready 1/1 означает, что в поде запущен 1 контейнер из 1 и он прошёл проверку готовности. Статус Running без Ready 1/1 — повод заглянуть в логи.

  • kubectl logs deployment/nginx — журнал работы приложения;
  • kubectl scale deployment nginx --replicas=3 — увеличить число копий до 3, через 5–10 секунд в kubectl get pods появится третий под;
  • kubectl delete service nginx и kubectl delete deployment nginx — удалить тестовое приложение и освободить порт.
Вывод kubectl get pods с тремя запущенными подами nginx
Три копии nginx запущены и работают (иллюстрация интерфейса)

Ошибки при настройке Kubernetes на VPS

Большинство сбоев в первый вечер сводятся к трём причинам: закрытый порт 6443, нехватка памяти у узла и неверное имя образа. Забытые лимиты ресурсов и включённый swap усугубляют вторую проблему. Каждую ошибку можно найти и исправить за 5–10 минут.

Первая ошибка: kubectl не подключается к кластеру

Команда kubectl get nodes отвечает connection refused на порту 6443. Так бывает, когда firewall (межсетевой экран) закрывает порт API-сервера или в ~/.kube/config остался адрес 127.0.0.1, скопированный с сервера.

Как решить: откройте порт командой ufw allow 6443/tcp и замените в kubeconfig строку server на публичный IP вашего VPS. Проверьте доступ командой nc -zv IP 6443. Если сертификат не подходит к этому адресу, добавьте IP в параметр --tls-san при установке k3s.

Вторая ошибка: под в статусе Pending или OOMKilled

На VPS с 1 ГБ ОЗУ система, k3s и приложение спорят за память. Под зависает в Pending, если узлу не хватает ресурсов, или падает с OOMKilled (Out Of Memory — память закончилась). Причину покажет kubectl describe pod имя.

Как решить: задайте в манифесте resources.limits.memory, например 256Mi, и не запускайте больше 2–3 подов. Отключите swap командой swapoff -a и удалите его строку из /etc/fstab: kubelet по умолчанию не работает с включённым swap. Надёжнее взять тариф с 2 ГБ ОЗУ.

Третья ошибка: ImagePullBackOff при запуске приложения

Под висит в статусе ImagePullBackOff: узел не может скачать образ. Причина — опечатка вроде ngnix вместо nginx или лимит Docker Hub в 100 анонимных запросов за 6 часов с одного IP.

Как решить: сверьте имя и тег образа в блоке Events команды kubectl describe pod. Если упёрлись в лимит, войдите в аккаунт Docker Hub и передайте кластеру учётные данные через kubectl create secret docker-registry.

Все три проблемы видны в выводе kubectl describe, поэтому начинайте диагностику с него, а не с переустановки кластера.

Kubernetes, Docker Compose или kubeadm: что выбрать

Выбор зависит от числа сервисов и серверов. Если у вас 1–3 контейнера на одном VPS, берите Docker Compose: он запускается одной командой docker compose up -d и почти не тратит ресурсы. Как поставить Docker, описано в статье про установку Docker.

Кластер оправдан от 3–5 сервисов или при нескольких узлах: он сам перезапускает упавшие поды и раскладывает нагрузку. Лёгкий вариант для VPS — k3s, урезанный дистрибутив Kubernetes. Полный Kubernetes через kubeadm (официальный установщик кластера) нужен, когда вы осваиваете промышленную схему с нуля или строите собственную инфраструктуру.

Docker Swarm проще Kubernetes и умеет работать с несколькими узлами, но развивается медленнее и встречается в вакансиях реже.

Инструмент Минимум ресурсов Установка Сложность Отказоустойчивость
Docker Compose 1 vCPU, 512 МБ ОЗУ 5 минут Низкая Нет, один сервер
Docker Swarm 1 vCPU, 1 ГБ ОЗУ 10 минут Средняя Есть, от 3 управляющих узлов
k3s 1 vCPU, 1 ГБ ОЗУ 1–3 минуты Средняя Есть, при нескольких узлах
kubeadm 2 vCPU, 2 ГБ ОЗУ на узел 30–60 минут Высокая Есть, полноценная

Кому Kubernetes не подходит

Kubernetes появился в 2014 году в Google, а с 2015 года его развивает CNCF (Cloud Native Computing Foundation). Он рассчитан на десятки сервисов, поэтому для одного лендинга, блога или Telegram-бота он избыточен. Для одного сайта или контейнера Docker Compose проще: кластер оправдан от 3–5 сервисов.

Второй случай — слабый сервер. На VPS с ОЗУ меньше 1 ГБ k3s не оставит памяти под ваше приложение. Учебный минимум — 1 vCPU и 1 ГБ, комфортно — 2 vCPU и 2–4 ГБ.

Третий случай — нет времени на обслуживание. Установка занимает 1–3 минуты, но потом кластер требует внимания. Вот что придётся делать регулярно:

  • обновлять версию минимум раз в год: Kubernetes поддерживает только три последние минорные версии;
  • делать бэкап etcd (хранилище состояния кластера) и проверять восстановление;
  • настроить мониторинг и следить за портами 6443 и 10250;
  • закладывать 500–1 000 ₽/мес даже на пробный сервер.

Если вы узнали себя, начните проще: возьмите панель управления хостингом, Compose на обычном VPS или один контейнер под systemd. Kubernetes можно добавить позже, когда сервисов станет больше. Честный вывод: выбирайте инструмент под задачу, а не под моду. Следующий шаг — подобрать VPS под вашу нагрузку.

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

Что такое Kubernetes и для чего он нужен
Kubernetes — это система оркестрации контейнеров: она запускает их на нескольких серверах, следит за состоянием и перезапускает упавшие. Так сайт или сервис продолжает работать при сбое одного узла. Обновления выкатываются постепенно, без остановки.
Чем Kubernetes отличается от Docker
Docker собирает и запускает контейнеры на одном сервере. Kubernetes управляет множеством контейнеров на многих серверах: распределяет нагрузку, масштабирует и лечит. Они дополняют друг друга, а не заменяют.
Можно ли установить Kubernetes на один VPS
Да, для этого подходит облегчённый дистрибутив k3s: он ставится одной командой и работает на одном узле. Для учебных задач и небольших проектов этого хватает. Отказоустойчивости у одного узла нет, для неё нужно от 3 серверов.
Сколько оперативной памяти нужно для Kubernetes
Для k3s минимум 1 ГБ, комфортно — 2–4 ГБ, потому что сама система занимает 500–700 МБ. Для полного Kubernetes через kubeadm берите от 2 ГБ на узел. Приложениям память нужна сверх этого.
Что такое k3s и чем он отличается от k8s
k3s — облегчённый дистрибутив Kubernetes от компании Rancher, один бинарный файл около 70 МБ. В нём уже есть ingress-контроллер Traefik и встроенное хранилище. API и команды kubectl те же, что и в обычном Kubernetes.
Что такое kubectl и как его установить
kubectl — консольная утилита для управления кластером. В k3s она уже встроена и вызывается как k3s kubectl. Для работы с компьютера скачайте kubectl отдельно и укажите файл kubeconfig.
Какие порты нужно открыть для Kubernetes
Для доступа к API откройте 6443, для сайтов через ingress — 80 и 443. Порт 10250 нужен только между узлами кластера, наружу его не открывайте. Сервисы NodePort используют диапазон 30000–32767.
Что такое под (pod) в Kubernetes
Под — минимальная единица запуска: один или несколько контейнеров с общим адресом и хранилищем. Обычно один под — один контейнер приложения. Отдельно подами не управляют, их создаёт Deployment.
Почему под завис в статусе Pending
Чаще всего у узлов не хватает процессора или памяти под запрошенные ресурсы. Выполните kubectl describe pod и прочитайте раздел Events: там указана причина. Освободите ресурсы или увеличьте тариф VPS.
Kubernetes бесплатный или платный
Сам Kubernetes распространяется бесплатно под открытой лицензией Apache 2.0. Платите за серверы, на которых он работает, и за время на обслуживание. Управляемые облачные кластеры берут дополнительную плату за control plane.

Итоговый чек-лист

Используйте этот список как финальную проверку: каждый пункт — короткий вывод из статьи выше. Отметьте для себя, что уже сделано, а что осталось.

  • Сервер соответствует минимуму: 1 vCPU и 1 ГБ ОЗУ для k3s, лучше 2 vCPU и 2 ГБ
  • Порты 6443, 80 и 443 открыты, порт 10250 закрыт снаружи
  • Команда kubectl get nodes показывает узел в статусе Ready
  • Тестовое приложение работает в двух-трёх копиях и открывается по NodePort
  • Файл kubeconfig сохранён в безопасном месте и не лежит в открытом репозитории
  • План обновления версии составлен: минимум раз в год

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

Источники

На сайте есть партнёрские ссылки: если вы оформите заказ по ним, мы получим вознаграждение от провайдера. Это не влияет на цену для вас и на место в рейтинге.