Linux

Запускаем Kubernetes на Linux: полный гайд для начинающих

В этом руководстве вы настроите рабочий кластер Kubernetes на Linux с нуля. Вы научитесь устанавливать необходимые компоненты, запускать первый под и проверять работоспособность оркестратора.

Обновлено 5 апреля 2026 г.
15-20 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04/24.04 LTSDebian 12 BookwormFedora 39+

Введение / Зачем это нужно

Kubernetes стал отраслевым стандартом оркестрации контейнеров. Понимание его архитектуры и умение управлять кластером открывает прямой путь к DevOps-инженерии и современным практикам CI/CD. В этом руководстве вы развернёте полностью рабочий локальный кластер на Linux, познакомитесь с утилитой kubectl и запустите своё первое приложение. После прохождения гайда вы сможете безопасно экспериментировать с деплоями, сервисами и масштабированием, не затрагивая рабочие среды.

Требования / Подготовка

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

  • Linux-дистрибутив на базе Debian или Ubuntu (22.04/24.04)
  • Минимум 2 ГБ ОЗУ и 2 ядра процессора
  • 20 ГБ свободного дискового пространства
  • Стабильное подключение к интернету
  • Права sudo или прямой root-доступ

Шаг 1: Обновление системы и отключение swap

Kubernetes не поддерживает работу с активным файлом подкачки. Сначала обновите списки пакетов и установите базовые утилиты:

sudo apt update && sudo apt install -y curl apt-transport-https

Отключите swap для текущей сессии и закомментируйте соответствующую строку в /etc/fstab, чтобы отключение сохранялось после перезагрузки:

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

💡 Совет: При использовании виртуальных машин выделяйте под гостевую ОС минимум 4 ГБ ОЗУ. Это предотвратит падение etcd и обеспечит стабильную работу API-сервера.

Шаг 2: Установка и настройка containerd

Современные версии Kubernetes работают с CRI-совместимыми средами выполнения. Установим containerd и подготовим конфигурацию:

sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

Включите поддержку systemd cgroup драйвера. Это рекомендуемый способ управления ресурсами, который гарантирует корректное взаимодействие с планировщиком:

sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd

Шаг 3: Развёртывание локального кластера

Minikube предоставляет быструю изолированную среду, идеально подходящую для обучения. Скачайте актуальный бинарник и сделайте его исполняемым:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

Инициализируйте кластер, явно указав ресурсы и драйвер запуска:

minikube start --driver=none --cpus=2 --memory=2048

Процесс инициализации займёт 2–4 минуты. Успешное завершение сопровождается сообщением kubectl configured to use "minikube" cluster and "default" namespace.

Шаг 4: Настройка kubectl и проверка статуса

Minikube автоматически настраивает контекст. Проверьте, что kubectl видит кластер и узел перешёл в рабочее состояние:

kubectl cluster-info
kubectl get nodes

В выводе вы должны увидеть строку с именем узла minikube и статусом Ready. Если статус отличается, подождите ещё минуту или проверьте логи компонента через journalctl -u kubelet.

Шаг 5: Запуск тестового приложения

Создайте деплоймент с веб-сервером Nginx и откройте к нему доступ через Service типа NodePort:

kubectl create deployment nginx-test --image=nginx:stable
kubectl expose deployment nginx-test --type=NodePort --port=80

Получите внешний URL для прямого доступа к приложению:

minikube service nginx-test --url

Откройте полученную ссылку в браузере или выполните curl <URL> в терминале. Вы увидите стандартную приветственную страницу Nginx.

Проверка результата

Убедитесь, что все компоненты работают штатно, выполнив комплексную диагностику:

kubectl get pods,svc,deployments
kubectl get events --sort-by='.lastTimestamp'

Здоровый кластер покажет статус Running для пода, NodePort для сервиса и отсутствие критических событий в последних строках вывода. Попробуйте масштабировать деплоймент командой kubectl scale deployment nginx-test --replicas=3 и наблюдайте, как оркестратор автоматически создаёт новые контейнеры.

Возможные проблемы

  • Ошибка ErrImagePull или ImagePullBackOff: Проверьте подключение к интернету и корректность имени образа. Если используете приватный реестр, настройте imagePullSecrets или выполните minikube image pull <image> перед деплоем.
  • Узел в статусе NotReady: Чаще всего проблема в драйвере сети или оставшемся активным swap. Выполните sudo cat /proc/swaps. Если вы видите файлы подкачки, отключите их повторно и перезапустите kubelet через sudo systemctl restart kubelet.
  • Порты заняты: Minikube требует свободных портов 8443, 10250 и ряда других. Используйте ss -tulnp | grep -E '8443|10250' для поиска конфликтов и остановите мешающий сервис перед повторным запуском.

Часто задаваемые вопросы

Сколько ресурсов нужно для локального кластера K8s?
Можно ли использовать Docker и Kubernetes одновременно?
Как безопасно удалить кластер, если эксперимент не удался?
Подойдёт ли этот гайд для production-среды?

Полезное

Подготовка системы и установка зависимостей
Установка containerd и настройка CRI
Развёртывание локального кластера
Настройка kubectl и проверка подключения
Запуск тестового приложения

Эта статья помогла вам решить проблему?