Kubernetes: что это такое и как развернуть кластер на VPS — инструкция для новичка
Kubernetes — система, которая запускает контейнеры на серверах, следит за ними и перезапускает при сбое. В статье вы разберёте, из чего состоит кластер, какие ресурсы нужны и как за 15 минут поднять лёгкий k3s на одном 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 до контейнера выглядит так:
- Вы вводите
kubectl apply -f app.yaml, и запрос уходит на порт6443. - API-сервер проверяет запрос и записывает объект в etcd.
- Scheduler (планировщик) выбирает узел для нового пода.
- Kubelet на этом узле, слушающий порт
10250, запускает контейнер.
| Компонент или объект | За что отвечает | Где живёт |
|---|---|---|
| API-сервер | принимает команды kubectl, проверяет их | control plane, порт 6443 |
| etcd | хранит состояние кластера | control plane |
| scheduler | выбирает узел для пода | control plane |
| kubelet | запускает и проверяет контейнеры | каждый узел, порт 10250 |
| Deployment | держит заданное число подов | запись в etcd |
| Service, Ingress | дают адрес и маршрутизируют трафик; NodePort — порты 30000–32767 | правила на узлах |

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

Какой 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 |
swapoff -a и закомментируйте строку со swap в файле /etc/fstab, иначе после перезагрузки сервера проблема вернётся.Как запустить первое приложение и проверить кластер
Для проверки возьмите веб-сервер nginx: он лёгкий и сразу показывает страницу в браузере. Подключитесь к серверу по SSH и создайте deployment — объект, который следит, чтобы нужное число копий приложения всегда работало: kubectl create deployment nginx --image=nginx --replicas=2.
Сравнить тарифы 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— удалить тестовое приложение и освободить порт.

Ошибки при настройке 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 отличается от Docker
Можно ли установить Kubernetes на один VPS
Сколько оперативной памяти нужно для Kubernetes
Что такое k3s и чем он отличается от k8s
Что такое kubectl и как его установить
Какие порты нужно открыть для Kubernetes
Что такое под (pod) в Kubernetes
Почему под завис в статусе Pending
Kubernetes бесплатный или платный
Итоговый чек-лист
Используйте этот список как финальную проверку: каждый пункт — короткий вывод из статьи выше. Отметьте для себя, что уже сделано, а что осталось.
- Сервер соответствует минимуму: 1 vCPU и 1 ГБ ОЗУ для k3s, лучше 2 vCPU и 2 ГБ
- Порты 6443, 80 и 443 открыты, порт 10250 закрыт снаружи
- Команда kubectl get nodes показывает узел в статусе Ready
- Тестовое приложение работает в двух-трёх копиях и открывается по NodePort
- Файл kubeconfig сохранён в безопасном месте и не лежит в открытом репозитории
- План обновления версии составлен: минимум раз в год
Если какой-то пункт пока не выполнен, вернитесь к нужному разделу статьи — там разобрано, как это сделать и на чём чаще всего ошибаются.
Источники
На сайте есть партнёрские ссылки: если вы оформите заказ по ним, мы получим вознаграждение от провайдера. Это не влияет на цену для вас и на место в рейтинге.